Мы используем настройку copy: true
с ng2-dragula
:
constructor(private dragulaService: DragulaService) {
dragulaService.setOptions('group-body-bag', {
copy: true,
copySortSource: true
});
}
Теперь мы хотим затемнить исходный элемент (тот, который все еще находится в списке, пока мы его перетаскиваем) чем-то вроде opacity: 0.3
. Как мы можем сделать это? С использованием
dragulaService.cloned.subscribe((value) => {
if (value && value.length && value.length === 4 && value[3] === 'copy') {
this.onDragCopy(value[1]);
}
});
мы можем найти исходный элемент и применить к нему прозрачность, но это кажется ужасно неправильным: перетаскиваемые элементы (естественно) поступают из массива данных, есть ли способ найти индекс перетаскиваемого элемента, чтобы мы могли сделать что-то вроде
dragulaService.cloned.subscribe((index) => {
this.draggedElement = index;
});
и
<li *ngFor="let article of articles; let i = index"
[class.original-dragged-element]="draggedElement === i">
(Я знаю, это уже плохо, я должен соответствовать статье).