【发布时间】:2020-09-29 21:37:05
【问题描述】:
我已经在这个问题上绞尽脑汁很久了。我想要实现的是有两个连接的具有恒定长度的拖放列表。这意味着如果我将一个元素从一个列表移动到另一个列表,则一个项目将被推送到另一个列表。这在cdkDropListDropped 事件期间当然是微不足道的,但我希望它在项目被拖到列表上时立即发生。
我的大部分尝试都涉及使用cdkDropListEntered 事件来:
- 尝试简单地移动数据数组中的项目:
public enter(list: number, event: CdkDragEnter<User[]>) {
if (list === 0) {
let data = this.schedule.responsible.pop();
this.schedule.queue.unshift(data);
} else {
let data = this.schedule.queue.shift();
this.schedule.responsible.push(data);
}
}
这导致了以下类型的错误:
core.js:6185 ERROR DOMException: Failed to execute 'insertBefore' on 'Node': 要插入新节点的节点不是该节点的子节点
尝试使用
CdkDropListaddItem()、removeItem()、getSortedItems()。这会导致类似的问题。尝试使用 Renderer2 移动 DOM 元素本身(并且保持数据不变)
有什么方法可以实现我想要的吗?
This 华丽的绘画有助于解释我想要实现的目标。
【问题讨论】:
标签: angular angular-cdk angular-cdk-drag-drop