我正在使用 Angular 的 Drag Drop CDK 在两个列表之间传输项目。我需要的一项特定功能是能够监听组件 API 提供的cdkDrag
元素。started
Subject
但是,在将项目转移到新列表后,我失去了事件侦听器。
此处的示例代码:https ://stackblitz.com/edit/angular-m8lcqp
将元素移动Fall Asleep
到完成列表时,我会登录started dragging
到控制台。但是,如果您尝试将该元素移回第一个列表,则不会触发该事件。我做错了什么?
要订阅该started
事件,我ViewChildren
会QueryList
使用cdkDrag
. 在 中ngAfterViewInit()
,我遍历这些拖动元素并订阅started
事件:
ngAfterViewInit() {
this.dragItems.forEach((drag) => {
drag.started.subscribe((element) => {
console.log('started dragging');
})
})
}
跟踪此事件的正确方法是什么?cdkDrag
由于元素现在位于不同的列表中,我是否需要检测页面上的更改然后重新循环并重新订阅?谢谢!