Angular Material provides the MatSort directive as an easy way the include interactive sorting in the tables of your application. With the MatSort directive, the user can sort the data on different columns by clicking on the column header.
sortables. get('comp_name_sort') as MatSortHeader). _setAnimationTransitionState({ toState: 'active' }); The first line is used to clear the sort in case the column you want the sort to is currently the active column.
You're mistaking matSortStart
for matSortDirection
.
Try this:
<table matSort (matSortChange)="sortData($event)" matSortActive="name" matSortDirection="asc" matSortDisableClear>
https://stackblitz.com/edit/angular-defaultsort?file=src/app/sort-overview-example.html
matSortStart
can be used to reverse the cycle used when sort (e.g. when the user clicks to sort, it starts at desc instead of asc).
Edit: Thanks Ben for providing an updated example
You can programmatically sort the table by invoking the sort(Sortable)
method of the data source. Assuming you've got a dataSource
component property for the data source:
// to put next to the class fields of the component
@ViewChild(MatSort) sort: MatSort
// to put where you want the sort to be programmatically triggered, for example inside ngOnInit
this.sort.sort(({ id: 'name', start: 'asc'}) as MatSortable);
this.dataSource.sort = this.sort;
@ViewChild(MatSort) sort: MatSort;
this.dataSource.sort = this.sort;
const sortState: Sort = {active: 'name', direction: 'desc'};
this.sort.active = sortState.active;
this.sort.direction = sortState.direction;
this.sort.sortChange.emit(sortState);
should work. demo
And to show sorting direction arrow, add next css (workaround)
th.mat-header-cell .mat-sort-header-container.mat-sort-header-sorted .mat-sort-header-arrow {
opacity: 1 !important;
transform: translateY(0) !important;
}
Update for Material (tested with v7.3):
@ViewChild(MatSort) matSort: MatSort;
private someMethod(): void {
this.matSort.sort({ id: 'columnName', start: 'asc', disableClear: false });
}
This will also update the mat-sort-header
's arrow without any workaround
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With