【发布时间】:2020-04-11 13:29:50
【问题描述】:
我在带有position: relative 的容器内有一个带有position: absolute 的<div> 元素。它的left 和top 属性绑定到component.ts 中的数据X 和Y。我的目的是使用 cdk 拖放移动容器内的 div。
在dragEnded 事件中,我检索了更新坐标 X 和 Y 所需的数据,因此问题开始了……
<div
class="character"
[style.left.px]="x"
[style.top.px]="y"
cdkDrag
cdkDragBoundary=".grid-container"
(cdkDragEnded)="dragEnded($event, c)"
></div>
我注意到 cdk 拖放应用属性 transform: translate3d(x,y,z) 以便从原始位置开始移动我的 div。所以,如果我想让我的 div left 和 top 绑定到我的后端属性,我可以在 dragEnd 事件上计算新坐标,应用它们,然后重置由 cdk 生成的变换属性。一切正常。
但是下次我拖动元素时,材质不会从我的 div 的新绝对位置开始应用变换,而是从原始位置开始。
我认为一种解决方案可能是检查CdkDragEnd event 是否包含与转换起点相关的数据并将其重置,但我没有找到任何东西。
知道这个属性是否隐藏在 CdkDragEvent 的某个地方吗?或者有其他解决这个问题的方法吗?
谢谢大家
【问题讨论】:
标签: angular drag-and-drop angular-cdk