我有数据表,我想从后端应用排序过程,因此最终用户可以在多个列上应用排序,我要做的是获取所有columns
及其排序值每个asc/desc
事件中的sortChange
。
让我们说这些列是:
name, gender, date_of_birth.
结果应该是:
[
{'name', 'asc'},
{'gender', 'desc'},
{'date_of_birth', 'desc'},
]
ts代码:
ngOnInit() {
this.getData([])
this.sort.sortChange.subscribe(
() => {
// access all the sortable columns
let sortable_columns = -------------- // what should I write here?
// call the http service
this.getData(sortable_columns)
});
}
现在我认为一般的算法很好,但是我找不到正确的语法来访问可排序的列,有关如何执行此操作的任何想法? 谢谢。
答案 0 :(得分:0)
我通过在每个SortCahnge
之后将活动列(最近排序的MatSortable列)存储在单独的结构中来解决此问题。
HTML脚本:
<mat-table matSort #table [dataSource]="dataSource" (matSortChange)="sortData($event)">
</mat-table>
ts代码:
ngOnInit() {
this.filterationArray['sort'] = [];
}
sortData(sort: Sort) {
let index = this.filterationArray['sort'].findIndex(
(elem) => {
return elem[0] == sort.active;
}
);
if (index == -1)
this.filterationArray['sort'].push([sort.active, sort.direction]);
else
this.filterationArray['sort'][index][1] = sort.direction;
console.log(this.filterationArray);
// call the get service
this.getDataFromBackEnd(this.filterationArray);
}