cdkDropTable错误无法读取未定义的属性'_getSiblingContainerFromPosition'

时间:2019-12-11 10:03:00

标签: angular7 angular-cdk mat-table

我正在使用工作正常的cdkDropTable,除了第一次尝试拖放不起作用的元素外,控制台上显示以下错误:

Uncaught TypeError: Cannot read property '_getSiblingContainerFromPosition' of undefined
    at DragRef.push../node_modules/@angular/cdk/esm5/drag-drop.es5.js.DragRef._updateActiveDropContainer

Unhandled Promise rejection: Cannot read property 'getItemIndex' of undefined ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read property 'getItemIndex' of undefined

然后,如果我再次尝试,它将正常工作。
在表格中,我输入:

<table mat-table #table [dataSource]="dataSource"
cdkDropList
[cdkDropListData]="dataSource.data"
(cdkDropListDropped)="dropTable($event)"
matSort>

在.ts中,dropTable方法是:

dropTable(event: CdkDragDrop<any[]>) {
    const prevIndex = this.dataSource.data.findIndex((d) => d === event.item.data);
    if(event.previousContainer === event.container){
      moveItemInArray(this.dataSource.data, prevIndex, event.currentIndex);
    } else {
      transferArrayItem(event.previousContainer.data, event.container.data, prevIndex, event.currentIndex)
        }
    this.dataSource.data = clonedeep(this.dataSource.data);
    this.tableConfig.tableData = this.dataSource.data;
    this.table.renderRows();
  }

除了一个答案,用户建议在ngOnInit和ngOnChanges中添加detectChanges方法,我什么都没找到。我已经说了,但是没用。

0 个答案:

没有答案