cdkDropListDropped 从未在 angular 10 和 material table 中触发
cdkDropListDropped never fired in angular 10 and material table
我正在使用 cdkDropList 对 material table 中的列重新排序。
在版本 8 之前一切正常,但在更新到版本 10 之后,cdkDropListDropped 从未被触发。
<table mat-table #table [dataSource]="dataSource"
cdkDropListGroup>
<ng-container *ngFor="let disCol of headers; let colIndex = index" matColumnDef="{{disCol.field}}">
<th mat-header-cell layout-align="start center" class="centered" *matHeaderCellDef
cdkDropList
cdkDropListLockAxis="x"
cdkDropListOrientation="horizontal"
(cdkDropListDropped)="dropListDropped($event, colIndex)"
cdkDrag
(cdkDragStarted)="dragStarted($event, colIndex)"
[cdkDragData]="{name: disCol.field, columIndex: colIndex}">
{{disCol.field}}
</th>
<td mat-cell layout-align="start center" class="centered" *matCellDef="let row " > {{row[disCol.field]}}
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"
style="pointer-events: none;"
>
</tr>
</table>
cdkDropList 和 cdkDrag 似乎不能包含在同一个标签中。
有人知道发生了什么事吗?
试试这个
<table mat-table #table [dataSource]="dataSource" cdkDropListOrientation="horizontal"
cdkDropList (cdkDropListDropped)="drop($event)">
<ng-container *ngFor="let disCol of headers; let colIndex = index" matColumnDef="{{disCol.field}}">
<th mat-header-cell layout-align="start center" class="centered" *matHeaderCellDef
cdkDropList
cdkDropListLockAxis="x"
cdkDropListOrientation="horizontal"
(cdkDropListDropped)="dropListDropped($event, colIndex)"
cdkDrag
(cdkDragStarted)="dragStarted($event, colIndex)"
[cdkDragData]="{name: disCol.field, columIndex: colIndex}">
{{disCol.field}}
</th>
<td mat-cell layout-align="start center" class="centered" *matCellDef="let row " > {{row[disCol.field]}}
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"
style="pointer-events: none;"
>
</tr>
</table>
并在 .ts 中
drop(event: CdkDragDrop<string[]>) {
moveItemInArray(this.displayedColumns, event.previousIndex, event.currentIndex);
}
并在 You .ts 添加这个
import {CdkDragDrop, moveItemInArray} from '@angular/cdk/drag-drop';
我正在使用 cdkDropList 对 material table 中的列重新排序。
在版本 8 之前一切正常,但在更新到版本 10 之后,cdkDropListDropped 从未被触发。
<table mat-table #table [dataSource]="dataSource"
cdkDropListGroup>
<ng-container *ngFor="let disCol of headers; let colIndex = index" matColumnDef="{{disCol.field}}">
<th mat-header-cell layout-align="start center" class="centered" *matHeaderCellDef
cdkDropList
cdkDropListLockAxis="x"
cdkDropListOrientation="horizontal"
(cdkDropListDropped)="dropListDropped($event, colIndex)"
cdkDrag
(cdkDragStarted)="dragStarted($event, colIndex)"
[cdkDragData]="{name: disCol.field, columIndex: colIndex}">
{{disCol.field}}
</th>
<td mat-cell layout-align="start center" class="centered" *matCellDef="let row " > {{row[disCol.field]}}
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"
style="pointer-events: none;"
>
</tr>
</table>
cdkDropList 和 cdkDrag 似乎不能包含在同一个标签中。
有人知道发生了什么事吗?
试试这个
<table mat-table #table [dataSource]="dataSource" cdkDropListOrientation="horizontal"
cdkDropList (cdkDropListDropped)="drop($event)">
<ng-container *ngFor="let disCol of headers; let colIndex = index" matColumnDef="{{disCol.field}}">
<th mat-header-cell layout-align="start center" class="centered" *matHeaderCellDef
cdkDropList
cdkDropListLockAxis="x"
cdkDropListOrientation="horizontal"
(cdkDropListDropped)="dropListDropped($event, colIndex)"
cdkDrag
(cdkDragStarted)="dragStarted($event, colIndex)"
[cdkDragData]="{name: disCol.field, columIndex: colIndex}">
{{disCol.field}}
</th>
<td mat-cell layout-align="start center" class="centered" *matCellDef="let row " > {{row[disCol.field]}}
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"
style="pointer-events: none;"
>
</tr>
</table>
并在 .ts 中
drop(event: CdkDragDrop<string[]>) {
moveItemInArray(this.displayedColumns, event.previousIndex, event.currentIndex);
}
并在 You .ts 添加这个
import {CdkDragDrop, moveItemInArray} from '@angular/cdk/drag-drop';