Angular 7は強力なDragDropModule
をもたらしました: https://material.angular.io/cdk/drag-drop/examples
ドキュメントでは、リスト内のアイテムの再配置、または複数のリスト間でのアイテムの転送について扱います。ただし、テーブルについては触れていません。
angularマテリアルのドラッグアンドドロップシステムを使用してマットテーブルまたはcdkテーブルの行を並べ替える快適な方法があるかどうか疑問に思っていました。
(cdkDropList
をmat-table
に追加すると、メカニズムが機能しますが、すべての豪華なアニメーションとデフォルトのドラッグプレースホルダーはありません。)
ドラッグアンドドロップでテーブルの行をソートするための実装しやすいデフォルトのようなものはありますか?
スタイリングはCSSによって行われます(サンプルページの[CSS]タブをご覧ください)。マットテーブルで動作するように微調整しました。
.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
をmat-table
に追加(cdkDropListDropped)="onListDrop($event)"
をmat-table
に追加cdkDrag
をmat-row
に追加onListDrop
は次のようになります。
onListDrop(event: CdkDragDrop<string[]>) {
// Swap the elements around
moveItemInArray(this.myArray, event.previousIndex, event.currentIndex);
}
moveItemInArray
はAngular Material関数です。インポートできます。
それはマットテーブルでは機能しません、より詳細な回答やコードの一部を投稿できますか