Как отключить перемещение / перемещение элемента в целевом cdkDropList в Angular 7
У меня есть 2 списка (столицы слева и страны справа). Я хотел бы иметь возможность переместить столицу в список стран и позволить пользователю удалить столицу из страны. Проблема в том, что элементы списка стран начинают перемещаться / сдвигаться (чтобы можно было вводить заглавные буквы). Но я хочу просто поставить сверху и, если это совпадение, предоставить сообщение и удалить город + страну из обоих списков.
Как отключить сортировку или смещение элементов в списке целевых стран, когда я перетаскиваю элемент city над элементами списка стран? Спасибо!
<div cdkDropList
[cdkDropListData]="capitals"
#capitalsList="cdkDropList"
[cdkDropListConnectedTo]="countryList">
<div cdkDrag
(cdkDragReleased)="onDragReleased($event)"
cdkDragBoundary=".row"
class="bg-info text-center border p-2"
*ngFor="let capital of capitals">{{ capital }}
</div>
</div>
<div cdkDropList
cdkDropListDisabled
[cdkDropListData]="countries"
#countryList="cdkDropList"
[cdkDropListConnectedTo]="capitalsList"
(cdkDropListDropped)="onDropListDropped($event)">
<div cdkDrag
cdkDragDisabled
class="text-center border p-2"
*ngFor="let country of countries">{{ country }}
</div>
</div>
3 ответа
Вы можете добавить правило CSS в класс.cdk-drag-placeholder следующим образом
.cdk-drag-placeholder {
display:none;
}
Примечание: это повлияет и на список, из которого вы его перетаскиваете, поэтому вы можете более точно указать контейнер, в который вы его перетаскиваете.
Я попробовал ответ от @Zammy, и у меня возникла проблема, когда элемент не отображался, но все еще смещал пространство. Это решение сработало для меня, поместив это в элемент списка источников
<div *cdkDragPlaceholder style="height: 0px"></div>
Вы можете попробовать добавить пользовательский Drag Placeholder, а затем скрыть его (display:none
например).
Добавьте еще один элемент внутри вашего cdkDrag
вот так:
<div cdkDrag>
<div *cdkDragPlaceholder style="display: none"></div>
</div>
Подсказка: вам может потребоваться сделать это в обоих списках!