хотите перетащить и заменить элемент вместо добавления каждого элемента - PullRequest
0 голосов
/ 25 марта 2020

Я хочу перетащить копию элемента, но всякий раз, когда мы перетаскиваем новый элемент, он должен заменить старый элемент.

    drop(event: CdkDragDrop<string[]>) {

    if (event.previousContainer === event.container) {
      moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);     
    } else {
      let item:any = event.previousContainer.data[event.previousIndex];
      let copy:any = JSON.parse(JSON.stringify(item));
      let element:any = {};
      for(let attr in copy){
        if(attr == 'title') {          
          element[attr] = copy[attr] += ' copy';
        } else{
          element[attr] = copy[attr];
        }       
      }

      this.destination.splice(event.previousIndex,0,element);  
     }
    }

ссылка на стек

1 Ответ

0 голосов
/ 25 марта 2020

В функции перетаскивания просто замените

//this.destination.splice(event.previousIndex,0,element); //<--replace this
//by 
  this.destination=[element];

ПРИМЕЧАНИЕ. Если вы используете пустой держатель cdkDragPlaceholder, вам станет лучше

В вашем originList

<div class="field-box" *ngFor="let item of origin" cdkDrag>{{item.title}}
    <!--add this line -->
      <div *cdkDragPlaceholder ></div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...