Меня пытались использовать перетаскивание материала angular, и я перебирал cdkDropList
контейнер. Я не могу перетаскивать элементы из каталога в список дел. Если я не использую цикл, то он работает нормально.
Вот мой стекблиц ссылка
Я пробовал без цикла, который работает нормально
<div cdkDropList #todoList = "cdkDropList" [cdkDropListData] = "todo" [cdkDropListConnectedTo] = "[done]" [id] = "item"
class = "column-list" (cdkDropListDropped) = "drop($event)"
<div class = "column-box" [ngClass] = "[(item.Name=='R') ?'Red':'',(item.Name=='G') ?'Green':'',(item.Name=='B') ?
'Blue':'',(item.Name=='Y') ?'Yellow':'',(item.Name=='O') ?'Orange':'']" *ngFor = "let item of items3" cdkDrag cdkDragLockAxis = "y">
{{item.Name}}</div>
</div>
но если я добавлю это *ngFor
, это не сработает
<div cdkDropList #todoList = "cdkDropList" [cdkDropListData] = "todo" [cdkDropListConnectedTo] = "[done]" [id] = "item"
class = "column-list" (cdkDropListDropped) = "drop($event)" *ngFor = "let item of signalContainer">
<div class = "column-box" [ngClass] = "[(item.Name=='R') ?'Red':'',(item.Name=='G') ?'Green':'',(item.Name=='B') ?
'Blue':'',(item.Name=='Y') ?'Yellow':'',(item.Name=='O') ?'Orange':'']" *ngFor = "let item of items3" cdkDrag cdkDragLockAxis = "y">
{{item.Name}}</div>
</div>
КОМПОНЕНТ.TS
import {Component} from '@angular/core';
import {CdkDragDrop, moveItemInArray, transferArrayItem} from '@angular/cdk/drag-drop';
@Component({
selector: 'cdk-drag-drop-connected-sorting-example',
templateUrl: 'cdk-drag-drop-connected-sorting-example.html',
styleUrls: ['cdk-drag-drop-connected-sorting-example.css'],
})
export class CdkDragDropConnectedSortingExample {
initialSkeleton = new Array(5);
done = [
'A','B','C','D','E'
];
drop(event: CdkDragDrop<string[]>) {
if (event.previousContainer === event.container) {
debugger;
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
} else {
event.container.data[event.currentIndex] = event.previousContainer.data[event.previousIndex];
}
}
}
HTML
<div class = "example-container">
<h2>To do</h2>
<div cdkDropList #todoList = "cdkDropList" [cdkDropListData] = "initialSkeleton" [cdkDropListConnectedTo] = "[doneList]" class = "example-list"
(cdkDropListDropped) = "drop($event)">
<div class = "example-box" *ngFor = "let item of initialSkeleton" cdkDrag>
<div class = "child" >{{item }}</div>
</div>
</div>
</div>
<div class = "example-container">
<h2>Done</h2>
<div cdkDropList #doneList = "cdkDropList" [cdkDropListData] = "done" [cdkDropListConnectedTo] = "[todoList]" class = "example-list"
(cdkDropListDropped) = "drop($event)">
<div class = "example-box" *ngFor = "let item of done" cdkDrag>{{item}}</div>
</div>
</div>
Я изменил код, теперь вы сможете перетаскивать элементы в цикле for. Надеюсь, это ответит на ваш вопрос.
@Ramya Какая ключевая часть заставляет его работать в цикле for?
Спасибо, это сработало нормально, но добавляет один дополнительный div. Я пытаюсь над этим поработать. Как только я закончу, я опубликую.