Angular 7带来了强大的DragDropModule:https://material.angular.io/cdk/drag-drop/examples
该文档涉及重新排列列表中的项目或在多个列表之间传输项目。但是,它并没有谈及表格。
我想知道是否有一种舒适的方式来使用angular material的拖放系统来重新排序mat-table或cdk-table中的行。
(您可以将cdkDropList添加到mat-table,这会使该机制工作,但没有所有花哨的动画和默认的拖动占位符。)
是否存在类似于通过拖放对表行进行排序的易于实现的默认值?
发布于 2018-12-05 18:28:18
样式由CSS完成(查看示例页面上的CSS选项卡)。我对它进行了调整,以便与mat-table一起工作:
.cdk-drag-preview {
box-sizing: border-box;
border-radius: 4px;
box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2),
0 8px 10px 1px rgba(0, 0, 0, 0.14),
0 3px 14px 2px rgba(0, 0, 0, 0.12);
}
.cdk-drag-placeholder {
opacity: 0;
}
.cdk-drag-animating {
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
}
.cdk-drop-list-dragging .mat-row:not(.cdk-drag-placeholder) {
transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
}我把它放在我的主styles.scss文件中。
对于任何想知道如何在垫子上实现拖放的人,您需要:
cdkDropList to mat-table(cdkDropListDropped)="onListDrop($event)" to mat-table(cdkDropListDropped)="onListDrop($event)" to mat-tablecdkDropListtomat-tableonListDrop看起来像这样:
onListDrop(event: CdkDragDrop<string[]>) {
// Swap the elements around
moveItemInArray(this.myArray, event.previousIndex, event.currentIndex);
}moveItemInArray是一个角度材质函数。您可以将其导入。
发布于 2019-01-25 00:08:14
发布于 2019-11-06 17:58:52
我在stackblitz上找到了一个非常好的例子:https://stackblitz.com/edit/table-drag-n-drop
为了不破坏拖放预览的ui,请使用标记
<mat-table>...</mat-table>
<mat-header-cell>...</mat-header-cell>
<mat-cell>...</mat-cell>
<mat-header-row>...</mat-header-row>
<mat-row>...</mat-row>而不是
<table mat-table>...</table mat-table>
<th mat-header-cell>...</th mat-header-cell>
<td mat-cell>...</td mat-cell>
<tr mat-header-row>...</tr mat-header-row>
<tr mat-row>...</tr mat-row>与https://stackoverflow.com/a/53630171/12331146中提到的css相结合,它对我来说是完美的解决方案。
https://stackoverflow.com/questions/53377450
复制相似问题