TL; DR:
Добавьте все атрибуты cdkDrop*
в div, к которому вы хотите иметь возможность перетаскивать, только не отображайте список. Убедитесь, что оно имеет то же свойство cdkDropListdata
, что и видимый список. Смотри ссылки на stackblitz для примеров.
Я нашел 2 способа решить эту проблему. Оба требуют обработки зоны перетаскивания <div>
как независимого cdkDropList.
1. Использование cdkDropListConnectedTo
Документация: https://stackblitz.com/edit/ng-cdkdroplistgroup
Stackblitz: CdkDropListConnectedTo Example
Соедините исходный список с невидимым «выпадающим» списком (это просто div / label), используя cdkDropListConnectedTo
.
2. Использование cdkDropListGroup
См. Документацию
Stackblitz: Пример CdkDropListGroup
Используйте директиву cdkDropListGroup
для div
, которая содержит все списки, между которыми вы хотите перетаскивать. Они будут автоматически подключены, как если бы вы использовали cdkDropListConnectedTo
для каждого из них со всеми их уникальными именами.
Чтобы иметь возможность добавить ярлык и поместить его в список, выполните тот же процесс, что и выше, для того чтобы видимый список и метка имели одно и то же свойство cdkDropListdata
.
В некоторых случаях это невозможно, поскольку метка и видимый список могут находиться в разных компонентах и получать свои данные из службы данных или быть наблюдаемыми. В этом случае вы захотите обработать событие drop
и обновлять списки самостоятельно, а не просто с помощью transferArrayItem()
. Если компоненты подписались на изменения, поведение будет таким же.