Как получить все сортируемые столбцы из MatSort - PullRequest
0 голосов
/ 05 октября 2018

У меня есть таблица данных, и я хочу применить процесс сортировки со стороны сервера, чтобы конечный пользователь мог применить сортировку по нескольким столбцам, что мне нужно сделать, это получить все 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)
            });
}

Теперь я думаю, что общий алогритм в порядке,но я не могу найти правильный синтаксис для доступа к сортируемым столбцам, любая идея о том, как это сделать?Спасибо.

1 Ответ

0 голосов
/ 05 октября 2018

Я решил эту проблему, сохраняя активный столбец (последний отсортированный столбец MatSortable) в отдельной структуре после каждого SortCahnge.

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);
    }
...