Я пытаюсь создать календарь в Angular для личного проекта. У меня есть таблица с div для каждого дня месяца, и внутри этого div у меня есть мои встречи. Я хочу перетаскивать свою встречу из одного дня в другой, я пытаюсь с помощью angular cdk drag & drop, но у меня ничего не получается.
Вот ячейка моя таблица:
<div #dayCell class="day-cell" cdkDropList (cdkDropListDropped)="drop($event)">
<div>{{day.getDate()}}</div>
<div class="schedule-wrapper full-width">
<div cdkDrag *ngFor="let schedule of schedules" class="schedule" [style.width.px]="getScheduleWidth(schedule)">
<div class="schedule-details">
<div class="schedule-text">{{schedule.title}}</div>
</div>
</div>
</div>
</div>
в функции перетаскивания я добавляю консольный журнал дня, используемого в ячейке, когда я перетаскиваю свою встречу из одного дня в другой, зарегистрированный день - это всегда день перед перетаскиванием.
Почему?
И кто-нибудь знает, как я могу передать свое назначение из одной ячейки в другую?
РЕДАКТИРОВАТЬ: я пытаюсь использовать ответ ниже, но у меня есть некоторые проблемы:
Я добавил атрибут cdkDropListGroup
к телу моей таблицы (который показывает все дни)
И вот одна ячейка таблицы:
<div #dayCell class="day-cell" cdkDropList [cdkDropListData]="schedulesOfDay.schedulesWrapper" (cdkDropListDropped)="drop($event)">
<div>{{day.getDate()}}</div>
<div class="schedule-wrapper full-width">
<ng-container *ngFor="let scheduleWrapper of schedulesOfDay.schedulesWrapper">
<ng-container *ngIf="scheduleWrapper.isShowed">
<div >
<div class="schedule" cdkDrag
[style.width.px]="getScheduleWidth(scheduleWrapper)"
[style.height.px]="20"
[style.top.px]="getScheduleHeightOffset(scheduleWrapper)"
[style.background]="scheduleWrapper.schedule.background">
>
<div class="schedule-details">
<div class="schedule-text">{{getScheduleTitle(scheduleWrapper)}}</div>
</div>
</div>
</div>
</ng-container>
</ng-container>
</div>
</div>
У меня есть cdkDropList на всю ячейку и cdkDrag для каждого из моих расписаний. Проблема в том, что при перетаскивании из одной ячейки в другую в функции перетаскивания previousContainer
и container
совпадают, поэтому ничего не перемещается. (И я также печатаю в консоли день ячейки, в которой был удален элемент, и он всегда показывает день, в который было расписание перед перетаскиванием).
Мне кажется, проблема в следующем:
Когда я перемещаю элемент, мне нужно изменить дату этого элемента (потому что я делаю новый рендеринг своих элементов сразу после). Но я не могу получить указанный перемещенный элемент c из контейнера, я могу просто получить все элементы