У меня есть таблица матов, в которой есть несколько сортируемых столбцов. Я могу установить начальную сортировку таблицы с помощью свойств matSortActive и matSortDirection для таблицы mat. При этом стрелка, указывающая направление сортировки в заголовках, отображается правильно.
Теперь, когда я пытаюсь сбросить сортировку в исходное состояние с помощью кнопки, сортировка корректно сбрасывается. Однако стрелка в заголовке не обновляется. Таким образом, стрелка все еще отображается в заголовке предыдущего отсортированного столбца.
Как вернуть стрелку в исходное состояние?
Моя таблица и кнопка сброса в HTML:
<button mat-button mat-raised-button (click)="removeFilters()" class="reset-button">Verwijder filters</button>
<mat-table #table [dataSource]="dataSource" matSort (matSortChange)="sortData($event)" matSortActive="comp_name_sort" matSortDirection="asc">
<ng-container matColumnDef="assetName">
<mat-header-cell *matHeaderCellDef mat-sort-header="comp_name_sort">Systeem</mat-header-cell>
<mat-cell *matCellDef="let asset"> {{asset.comp_name}} </mat-cell>
</ng-container>
<ng-container matColumnDef="softwareName">
<mat-header-cell *matHeaderCellDef mat-sort-header="soft_name_sort">Software</mat-header-cell>
<mat-cell *matCellDef="let asset"> {{asset.soft_name}} </mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
</mat-table>
Мой файл TS:
export class AssetsComponent implements OnInit {
@ViewChild(MatSort) sort: MatSort;
assets: Asset[];
displayedColumns = ['assetName', 'softwareName',];
dataSource = new MatTableDataSource<Asset>(this.assets);
constructor( private assetsService: AssetsService) { }
ngOnInit() {
this.getAssets();
}
getAssets(): void {
this.assetsService.getAssets().subscribe(
assets => {
this.assets = assets;
this.dataSource = new MatTableDataSource<Asset>(this.assets);
}
);
}
sortData(event): void {
this.assetsQueryService.setSorts(event);
this.getAssets();
}
removeFilters() {
this.sort.active = 'comp_name_sort';
this.sort.direction = 'asc';
this.sort.sortChange.emit({active: 'comp_name_sort', direction: 'asc'});
this.assetsQueryService.removeFilters();
this.getAssets();
}
}
Столбец и направление сортировки передаются в assetsService, поскольку сортировка выполняется в бэкэнде (из-за разбивки на страницы на стороне сервера, здесь не показанной). Это все работает хорошо, также с кнопкой сброса. Единственная проблема - отображаемая стрелка.
Итак, в заключение, как мне программно сбросить стрелку сортировки, отображаемую в таблице, в исходное состояние?
Любая помощь будет оценена.