У меня есть <div>
элемент с position: absolute
внутри контейнера с position: relative
. Его свойства left
и top
связаны с данными X и Y в component.ts
. Моя цель - переместить div внутри моего контейнера с помощью cdk drag and drop.
В случае события dragEnded
я получаю данные, которые мне нужны, чтобы обновить координаты X и Y, и поэтому начинается проблема ...
<div
class="character"
[style.left.px]="x"
[style.top.px]="y"
cdkDrag
cdkDragBoundary=".grid-container"
(cdkDragEnded)="dragEnded($event, c)"
></div>
Я заметил, что cdk drag and drop применяется свойство transform: translate3d(x,y,z)
, чтобы переместить мой div, начиная с его исходного положения. Поэтому, если я хочу, чтобы мои div и top были привязаны к моим свойствам бэкэнда, я могу просто вычислить новые координаты для события dragEnd, применить их и сбросить свойство transform, созданное cdk. Все работает.
Но в следующий раз, когда я перетаскиваю элемент, материал применяет преобразование не начиная с новой абсолютной позиции моего div, а с исходной.
Я думал, что одно решение может быть проверить, содержит ли CdkDragEnd event
данные, относящиеся к начальной точке преобразования, и сбросить их, но я ничего не нашел.
Есть идеи, если это свойство скрыто где-то в CdkDragEvent? Или есть какое-то другое решение этой проблемы?
Спасибо, ребята