Вы можете использовать свойства id и cdkDropListConnectedTo , чтобы связать оба списка:
Компонент 1:
<div cdkDropList id="list-1" cdkDropListConnectedTo="list-2" (cdkDropListDropped)="drop($event)">
<div *ngFor="let item of list" cdkDrag>{{ item }}</div>
</div>
Компонент 2:
<div cdkDropList id="list-2" cdkDropListConnectedTo="list-1" (cdkDropListDropped)="drop($event)">
<div *ngFor="let item of list" cdkDrag>{{ item }}</div>
</div>
Если вам нужно соединить несколько списков в один список, вы можете использовать следующий синтаксис: [cdkDropListConnectedTo]="['list-1', 'list-2', 'list-3', 'list-4']"
После связывания списков, вы должны правильно обновить один или оба списка в зависимости от действий.Вы можете сделать это с помощью функции перетаскивания следующим образом:
drop(event: CdkDragDrop<string[]>) {
if (event.container.id === event.previousContainer.id) {
// move inside same list
moveItemInArray(this.list, event.previousIndex, event.currentIndex);
} else {
// move between lists
}
}
Для перемещения элементов между списками вы, возможно, захотите централизованно отслеживать списки.Вы можете сделать это, используя Сервис, Магазин или другие методы.