У меня есть таблица угловых матов, которая правильно отображает данные.Я пытаюсь добавить функцию сортировки с помощью mat-sort.Прямо сейчас маленькие стрелки появляются рядом с каждым столбцом, но таблица вообще не реагирует на нажатие.Многие другие проблемы SO с аналогичными проблемами были решены путем вывода таблицы за пределы *ngIf
или установки datasource
позднее в жизненном цикле.Я не думаю, что в моем коде есть такие проблемы, хотя я могу ошибаться.
table.component.ts
import { Component, Input, SimpleChanges, OnInit, ViewChild } from '@angular/core';
import { MatTableDataSource, MatSort } from '@angular/material';
import { SelectionModel } from '@angular/cdk/collections';
import { Data } from '...';
@Component({
...
})
export class WorkflowManagerTableComponent{
@Input() data: Data[];
@Input() title: string;
@ViewChild(MatSort) sort: MatSort;
displayedColumns: string[] = ['select'];
dataProps: string[] = [];
ngOnChanges(changes: SimpleChanges) {
console.log("ngOnChanges")
this.data = changes.data.currentValue;
if (this.data) {
this.dataSource = new MatTableDataSource(this.data);
this.dataSource.sort = this.sort;
this.dataArray = this.data;
for (var property in this.data[0]){
if(this.data[0].hasOwnProperty(property)){
this.dataProps.push(property)
}
}
this.displayedColumns = this.displayedColumns.concat(this.dataProps);
}
}
public dataArray: Data[];
public dataSource: MatTableDataSource<Data>;1
}
table.component.html
<table mat-table matSort [dataSource]="dataArray" class="mat-elevation-z8">
<ng-container *ngFor="let prop of dataProps" matColumnDef="{{prop}}">
<th mat-header-cell *matHeaderCellDef mat-sort-header>
{{prop}}
</th>
<td mat-cell *matCellDef="let data"> {{data[prop]}} </td>
</ng-container>
</table>
Как я могу получитьковрик сортировать на работу?Спасибо,