Angular 6 7 8 - Перетаскивание + виртуальная прокрутка + Наблюдаемый

Мне нужно, чтобы Drag&drop работал с виртуальной прокруткой. Источник данных моего VS является наблюдаемым. Я попробовал этот код, но он не работает, никаких изменений в списке VS, только анимация:

<ng-container *ngIf="observableData | async as items">
<cdk-virtual-scroll-viewport
    cdkDropList 
    #virtualScroller
    (cdkDropListDropped)="drop($event)">
    <mat-list>
        <mat-list-item 
            cdkDrag     
            *cdkVirtualFor="let item of items; let i = index; trackBy: trackByIdx">
            <h4 matLine cdkDragHandle>
                List item Title
            </h4>
            <p matLine cdkDragHandle>
                List item text
            </p>                
        </mat-list-item>
    </mat-list>
</cdk-virtual-scroll-viewport>

и вот мой обработчик TS:

drop(event: CdkDragDrop<any[]>) {
     const vsStartIndex = this.virtualScroller.getRenderedRange().start;
     moveItemInArray( this.observableData.value, event.previousIndex + 
     vsStartIndex, event.currentIndex + vsStartIndex);
} 

Как мне реализовать d&d с помощью наблюдаемых списков?

0 ответов

Вы должны передать данные в список [cdkDropListData]="items"

<cdk-virtual-scroll-viewport
cdkDropList
[cdkDropListData]="items"
#virtualScroller
(cdkDropListDropped)="drop($event)">
Другие вопросы по тегам