Как правило, вы хотите проверить, когда предмет был уронен, разрешен ли ему контейнер или нет.
Мы можем использовать CdkDrag 'cdkDragDropped
событие.cdkDragDropped
испускает объект, который имеет тип интерфейса CdkDragDrop
.CdkDragDrop
имеет свойство с именем isPointerOverContainer: boolean
, которое возвращает указатель на то, был ли указатель пользователя на контейнере при отбрасывании элемента.
Я создал пример кода для stackblitz .
По сути, я сделал следующее:
- Прослушал
cdkDragDropped
событие cdkDrag
элемента: <div class="example-box" *ngFor="let item of todo" cdkDrag (cdkDragDropped)="dragDropped($event)">{{item}}</div>
- В функции
dragDropped
я сохранилфлаг: dragDropped(event: CdkDragDrop<string[]>) {
this.isPointerOverContainer = event.isPointerOverContainer;
}
- В функции
drop
я проверил тот же флаг: if (this.isPointerOverContainer) {...} else { //dropped outside }
В настоящее время элемент вернется в исходное положение, если его выпустить наружу.Но анимация не обрабатывается, вы можете исследовать эту часть.