允许在 cdkDropList 中水平定位

Allow horizontal positioning in cdkDropList

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

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

添加 cdkDropListGroupcdkDroplist 时,所有元素自动左对齐。

例如;我希望蓝色“块”从紫色“块”开始,使用 cdkDragDrop.

根据 documentation 你问的可以不使用 cdkDropListGroup.

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

[cdkDragFreeDragPosition] 接收类型为 {x: number, y: number} 的对象。这些将决定块将出现在元素中的什么位置。

根据您的实现,您可以简单地逐个渲染元素,并创建一个函数,该函数为每个元素 returns xy 变量。或者,您可以创建一个包含所有默认放置值的数组。


附带说明一下,您似乎希望 cdkDropListGroupcdkDropList 指令中的列表组织 属性 同时能够设置自定义起始位置。

当前指令无法做到这一点。 cdkDropList 不接受 [cdkDragFreeDragPosition] 输入,因此您无法自行设置 x 轴上的位置。

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

亲切的问候。

不幸的是,使用 cdkDropListGroup 无法做到这一点。 documentation 明确指出元素不能在 cdkDropList.

中自由拖动

When outside of a cdkDropList element, draggable elements can be freely moved around the page.

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