База на основе решения Угловая 5 Сортировка таблицы данных материала не работает
В Angular 8 декоратору @ViewChild
требуется второй аргумент {static: true|false}
Чтобы поймать MatSort
компонент после рендеринга DOM, установите {static:false}
:
export class TableSortingExample{
sort;
@ViewChild(MatSort, {static: false}) set content(content: ElementRef) {
this.sort = content;
if (this.sort){
this.dataSource.sort = this.sort;
}
}
}
Когда установлено {static : true}
, Angular Compiler считает этот элемент @ViewChild
статическим, поэтому он получает элемент только один раз при ngOnInit()
. Даже если сработал *ngIf
, он все равно не может поймать компонент MatSort
.
См. https://stackoverflow.com/a/56359612/11777581 от @ PierreDuc