Angular Drag and Drop — список, который не отображался, не будет получать элементы даже после установки на отображение блока

#javascript #html #angular #drag-and-drop #angular-cdk

#javascript #HTML #angular #перетаскивание #angular-cdk

Вопрос:

Мои требования требуют скрытия cdkDropList , пока пользователь не начнет перетаскивать элемент. Поэтому, когда пользователь начинает перетаскивать элемент, выпадающие списки становятся видимыми, и они начинают их получать.

Я достигаю этого, установив display none в CSS, как показано ниже.

 .drop {
  display: block;
}


// this makes the drop element display: none until you start dragging (angular adds the class .cdk-drop-list-dragging when drag is started)

.drop(:not(.cdk-drop-list-receiving):not(.cdk-drop-list-dragging)) {
  display: none;
}
 

Однако это не работает, и cdkDropList элементы не получат мои элементы.

Если я удалю display: none; и сделаю вместо visibility: hidden; этого, это сработает. Проблема в том, что мне нужно, чтобы он не занимал место в DOM. (Я перепробовал все подходы, такие как position: absolute, и все, что перемещает / удаляет элемент, предотвратит его удаление после отображения).

Любая помощь приветствуется. Спасибо!

Комментарии:

1. Можете ли вы установить ширину и высоту равными 0 перед началом перетаскивания? Он все еще находится в DOM, но не выполняется.

2. Та же проблема. Похоже, эта проблема заключается в том, что dom зависает с точки зрения удаления. поэтому, если ширина и высота равны 0, некуда выполнить dop для