Не уверен, поможет ли это вашей ситуации, так как кода нет, но мы обнаружили, что MatTable загружается очень медленно, если большой набор данных установлен за до , когда вы устанавливаете пагинатор источника данных.
Например - рендеринг занимает несколько секунд ...
dataSource: MatTableDataSource<LocationItem> = new MatTableDataSource();
@ViewChild(MatSort) sort: MatSort;
@ViewChild(MatPaginator) paginator: MatPaginator;
ngOnInit() {
this.dataSource.data = [GetLargeDataSet];
}
ngAfterViewInit() {
this.dataSource.sort = this.sort;
this.dataSource.paginator = this.paginator;
}
... но это быстро
ngOnInit() {
// data loaded after view init
}
ngAfterViewInit() {
this.dataSource.sort = this.sort;
this.dataSource.paginator = this.paginator;
/* now it's okay to set large data source... */
this.dataSource.data = [GetLargeDataSet];
}
Между прочим, мы обнаружили эту проблему только при втором доступе к компоненту, поскольку большой набор данных с сервера кэшировался и был сразу же доступен при втором обращении к компоненту. Другой вариант - добавить .delay (100) к вашей наблюдаемой, если вы хотите оставить этот код в функции ngOnInit.
В любом случае, это может или не может помочь вашей ситуации.