允许在cdkDropList中水平定位

问题描述

在我的应用程序中,我有多行,在这些行中是“块”,可以在行之间拖动它们,效果非常好。

但是,除了在行之间拖动外,我还希望能够水平地自由放置行。

enter image description here

添加cdkDropListGroupcdkDroplist时,所有元素都会自动保持左对齐。

例如;我希望蓝色的“块”开始于紫色的cdkDragDrop结束处。

解决方法

根据documentation,您可以在不使用cdkDropListGroup的情况下完成询问。

相反,您应该使用cdkDrag[cdkDragFreeDragPosition]

[cdkDragFreeDragPosition]接收{x: number,y: number}类型的对象。这些将指示这些块将在您的元素中出现的位置。

根据您的实现,您可以简单地逐个渲染元素,然后创建一个函数,该函数返回每个元素的xy变量。另外,您可以创建一个包含所有默认展示位置值的数组。


另一方面,似乎您希望cdkDropListGroupcdkDropList指令中的列表组织属性同时具有设置自定义起始位置的能力。

这不能用当前指令来完成。 cdkDropList不接受[cdkDragFreeDragPosition]输入,因此您无法自行设置x轴上的位置。

您需要开发一个自定义指令以允许这种情况发生。

亲切的问候。

,

不幸的是,使用cdkDropListGroup无法做到这一点。 documentation特别指出了元素不能在cdkDropList中随意拖动。

在cdkDropList元素之外,可拖动元素可以在页面上自由移动。

您可以使用cdkDragFreeDragPosition设置初始值,并通过(cdkDragEnded)事件将对象捕捉到网格。