问题描述
在我的应用程序中,我有多行,在这些行中是“块”,可以在行之间拖动它们,效果非常好。
但是,除了在行之间拖动外,我还希望能够水平地自由放置行。
添加cdkDropListGroup
和cdkDroplist
时,所有元素都会自动保持左对齐。
例如;我希望蓝色的“块”开始于紫色的cdkDragDrop
结束处。
解决方法
根据documentation,您可以在不使用cdkDropListGroup
的情况下完成询问。
相反,您应该使用cdkDrag
和[cdkDragFreeDragPosition]
。
[cdkDragFreeDragPosition]
接收{x: number,y: number}
类型的对象。这些将指示这些块将在您的元素中出现的位置。
根据您的实现,您可以简单地逐个渲染元素,然后创建一个函数,该函数返回每个元素的x
和y
变量。另外,您可以创建一个包含所有默认展示位置值的数组。
另一方面,似乎您希望cdkDropListGroup
和cdkDropList
指令中的列表组织属性同时具有设置自定义起始位置的能力。
这不能用当前指令来完成。 cdkDropList
不接受[cdkDragFreeDragPosition]
输入,因此您无法自行设置x轴上的位置。
您需要开发一个自定义指令以允许这种情况发生。
亲切的问候。
,不幸的是,使用cdkDropListGroup
无法做到这一点。 documentation特别指出了元素不能在cdkDropList
中随意拖动。
在cdkDropList元素之外,可拖动元素可以在页面上自由移动。
您可以使用cdkDragFreeDragPosition
设置初始值,并通过(cdkDragEnded)
事件将对象捕捉到网格。