Я пытаюсь отсортировать MatTableDataSource программным способом, чтобы можно было сортировать данные с помощью кнопки, а не заголовка столбца таблицы при просмотре данных в определенном мобильном макете.Однако у меня возникли проблемы с этим.
Я следовал совету этого поста о том, как это сделать, но сортировка данных не отражается.Дизайн мобильного макета для использования тех же данных, что и в таблице:
<mat-card matSort *ngFor="let item of dataSource.filteredData">
Функция, которую я использую для попытки сортировки данных:
sortDataSource(id: string, start: string){
this.dataSource.sort.sort(<MatSortable>({id: id, start: start}));
}
, которая вызывается при нажатиина кнопку в мат-меню, например
<mat-menu #sortMenu="matMenu" yPosition="below" [overlapTrigger]="false">
<button mat-menu-item (click)="sortDataSource('createdDate', 'asc')"><span>Creation Date</span><mat-icon>arrow_upward</mat-icon></button>
Любая помощь по этому вопросу будет принята с благодарностью!
Ссылка на StackBlitz.
Редактировать: Добавление, где я присваиваю данные источнику данных таблицы, который поступает из наблюдаемого массива:
this.data$.subscribe(data => {
this.dataSource.data = data;
this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort;
}
Редактировать 2: Исправлено исправление изображения ошибки путем добавления «matSort» к mat-card
с использованием *ngFor
для создания мобильной версии макета mat-table
.