Angular 8嵌套拖放

时间:2019-12-03 09:20:12

标签: javascript angular drag-and-drop

很遗憾,我找不到常见问题的解决方案。

这是代码https://stackblitz.com/edit/angular-ygwaxs

的链接

我有这种情况:在服务器上,我得到了一个json树结构(在示例中,组件内部直接进行了简化)

有空节点,但是每个人都声明了子数组。

我试图在html级别ng-template和ng-container上在componente内部管理这种表示形式。

问题是我需要使用拖放功能对节点进行排序。

具体来说,每个部分都可以是孩子或父母,因此,每个部分都可以拖放。

我也尝试使用Angular Material 8 CDK拖放(https://material.angular.io/cdk/drag-drop/overview)和使用拖放API的香草Javascript(https://developer.mozilla.org/…/…/ API / HTML / Drag_and_Drop_API来实现它,但是,如果在第一种情况下具有嵌套拖放的事实无助于解决方案,在第二种情况下,我已经进行了测试,但是在Angular组件内部,似乎没有绑定拖放的事件被接受;当我尝试将一个区域拖放到标签放置区域中时,光标会发生空投变化。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:5)

最近,我在树状结构中嵌套拖放/排序项目时也遇到了问题。

对我来说,解决方案是通过cdkDropListConnectedTo链接不同的cdkDropList,并通过cdkDrag项上的cdkDragMoved事件获取目标放置位置。

演示:https://stackblitz.com/edit/angular-cdk-nested-drag-drop-tree-structure

答案 1 :(得分:0)

您可以使用可排序的js嵌套排序:https://sortablejs.github.io/Sortable/#nested

还有一个可排序js的角度实现: https://github.com/SortableJS/ngx-sortablejs

答案 2 :(得分:-1)

有一篇关于可排序、嵌套、拖放列表的文章。 它还包括一个仅使用 @angular/cdk

的有效 stackblitz 演示

https://sienakasa.medium.com/angular-cdk-nested-drag-and-drop-d849365a7ca9