CdkDrag как редактировать положение элемента при перетаскивании - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь сделать календарь в Angular с помощью перетаскивания Cdk, мои графики отображаются в моем календаре, и некоторые могут быть на несколько дней.

Когда я перетаскиваю эти Расписания, охватывающие несколько дней, меняют их размеры сразу после начала перетаскивания (чтобы их можно было легко заменить в другой день). Проблема в том, что когда я изменяю их размер, они больше не находятся под курсором мыши.

Возможно ли получить позицию, когда пользователь нажимает на мой CdkDrag, а затем заменить мой элемент на эту позицию?

Вот мой перетаскиваемый div:

<div class="schedule schedule-{{scheduleWrapper.schedule.id}}" cdkDrag
                 [cdkDragData]="scheduleWrapper"
                 (cdkDragStarted)="onDragStart($event, scheduleWrapper, schedulePlaceholder)">
    ....
</div>

И в функции onDragStart вот как я изменяю размер моего элемента:

 this.renderer2.setStyle(event.source.element.nativeElement, 'width', this.cellWidth + 'px');

РЕДАКТИРОВАТЬ: Что я я пытаюсь сделать это просто положение курсора (x, y), когда пользователь начинает перетаскивать элемент. Я нашел способ сделать это, просто добавив функцию, которая сохраняет х и у при каждом движении мыши, но я не знаю, хорошо ли она оптимизирована для использования чего-то подобного. Не существует функции, которая может определить положение мыши только на определенный момент c? Изменить: это вообще не оптимизировано и делает мое приложение медленным

РЕДАКТИРОВАТЬ 3: Я нашел способ получить позицию (используя событие щелчка до события перетаскивания). Но теперь у меня есть другая проблема, я не могу найти, как отредактировать положение элемента CdkDrag во время его перетаскивания.

Мне нужно изменить положение сразу после начала перетаскивания, чтобы элемент находился под курсором мыши .

...