问题描述
我已经实现了一个解决方案,可以在两个带有数据源数组的mat-table之间进行拖放。
当时,我将Angular Material Schematics中的代码用于drop函数,如下所示:
drop(event: CdkDragDrop<MyObject[]>) {
if (event.prevIoUsContainer === event.container) {
moveItemInArray(event.container.data,event.prevIoUsIndex,event.currentIndex);
} else {
transferArrayItem(event.prevIoUsContainer.data,event.container.data,event.currentIndex);
}
}
但是,当添加分页和排序时,我将数据源切换为MatTableDatasource
时,拖放功能停止工作。
通常,是否可以在启用分页和排序功能的mat-table上进行拖放操作?
解决方法
事实证明,拖放功能实际上可以在启用分页和排序功能的mat-table上工作。
简而言之,事件类型更改为 CdkDragDrop event.container.data
获取数据和event.previousContainer.data
,因为它们都包裹在MatTableDataSource
内。
我必须像这样更改放置功能:
drop(event: CdkDragDrop<MatTableDataSource<MyObject>,any>) {
if (event.previousContainer === event.container) {
moveItemInArray(event.container.data.data,event.previousIndex,event.currentIndex);
} else {
transferArrayItem(event.previousContainer.data.data,event.container.data.data,event.currentIndex);
}
}
如果还有其他见解,请分享!