Dragula: отменить падение в ng2-dragula

У меня есть angular2 приложение с typescript, Я использую ng2-dragula, чтобы создать приложение для перетаскивания.

Мне необходимо проверить условие и отменить перетаскивание, если условие ложно, и я знаю, что здесьrevertOnSpill тот revertOnSpill:true может вернуть элемент на первое место.

Но я не знаю, как это возможно в ng2-dragula, я сделал это в onDrop, вот код

 constructor() {

              dragulaService.drop.subscribe((value) => {
                  this.onDrop(value.slice(1));
              });

                dragulaService.setOptions('second-bag', {
                  removeOnSpill: true
              });
 }

private onDrop(args) {
   bla
   bla
   bla
   if(err.status=="404")                                                               
          this.dragulaService.removeModel;
         // this.dragulaService.cancel; also tried but did not work   
}

и вот HTML-код:

<div   id="toPlay" class="playBox roundedBox" [dragula]="'second-bag'">
    <img class="w3-animate-top" [src]="sax_path" alt="sax" id="saxsophone"/>
    <img class="w3-animate-top" [src]="drum_path" alt="drum" id="drum"/> 
</div>
<div   id="scene"  [dragula]="'second-bag'">

</div> 

Package.json - это:

 "dependencies": {
    "dragula": "^3.7.2"
  },
  "peerDependencies": {
    "@angular/common": "^2.0.0",
    "@angular/core": "^2.0.0",
    "@angular/compiler": "^2.0.0",
    "@angular/forms": "^2.0.0"
  },
  "devDependencies": {
    "angular-cli": "1.0.0-beta.22-1",
    "typescript": "2.0.10"
  }

проблема в том, что я не знаю, как отменить падение?

2 ответа

Решение

Существует свойство, называемое булевыми движениями, которое контролирует, если элемент является подвижным или нет

this.dragulaService.setOptions('second-bag', {

        moves:  (el, container, handle) =>{

                             if(YourCondition)
                                     //return true;
                             else
                                     //return false; 
                         }))

Я знаю, что это довольно старый пост, но все же, если кто-то его ищет. Если вы хотите использовать собственные события Dragula, чтобы отменить удаление. Следующий фрагмент кода может помочь вам асинхронно вернуть последнюю каплю в предыдущее местоположение. Здесь, когда начинается перетаскивание, мы сохраняем сведения о родителе и родительском одноуровневом элементе в глобальной переменной. А затем использовать эти данные при удалении, чтобы асинхронно вернуть их.

      

Другие вопросы по тегам