У меня возникли проблемы с моим angular приложением материала. Я использую данные с пагинатором. Данные не нужно сортировать.
Во время загрузки данных я показываю вращающийся мат
<div *ngIf="schools !== undefined">
<mat-spinner *ngIf="showSpinner" style="margin:0 auto;"></mat-spinner>
<div *ngIf="!showSpinner">
Keine Daten gefunden.
</div>
</div>
<div *ngIf="schools !== undefined">
<mat-table [dataSource]="dataSource">
...
</mat-table>
<mat-paginator [pageSizeOptions]="[10, 20, 50, 100]" [pageSize]="20" showFirstLastButtons></mat-paginator>
</div>
В обычном случае я загружаю данные, и вращающийся барабан останавливается, когда данные загружаются, а затем данные отображаются. Это прекрасно работает.
Но с таблицей, имеющей около 400 строк, у меня возникает эта проблема:
Когда данные загружаются успешно, вращатель становится очень очень медленным в течение секунды и таблица данных показана со всем содержимым. (разделено на paginator)
Для загрузки данных из API требуется около 400 миллисекунд, а для анализа - около 3 миллисекунд, так что это не должно быть проблемой.
Я загружаю данные вот так :
ngOnInit() {
setTimeout(() => {
this.showSpinner = false;
}, 5000);
this.userID = this.authService.getCurrentUser.uid;
this.loadData();
}
loadData() {
this.apiService.getSchools().subscribe((schoolsData: any) => {
this.schools = this.refParser.parse(schoolsData);
this.dataSource = new MatTableDataSource(this.schools);
this.cdr.detectChanges();
this.dataSource.paginator = this.paginator;
});
}
Я уже нашел сообщение о потоке стека, которое должно помочь мне (Angular 6 MatTable Performance в 1000 строк. ). Но это мне не помогло: (
Я попробовал так:
ngOnInit() {
setTimeout(() => {
this.showSpinner = false;
}, 5000);
this.userID = this.authService.getCurrentUser.uid;
//this.loadData();
this.dataSource = new MatTableDataSource();
this.dataSource.paginator = this.paginator;
}
ngAfterViewInit(){
setTimeout(() => {
this.apiService.getSchools().subscribe((schoolsData: any) => {
this.schools = this.refParser.parse(schoolsData);
this.dataSource.data = this.schools;
this.cdr.detectChanges();
})
})
}
Это не дало мне никакого увеличения производительности. Единственное, что случилось, было то, что пагинатор не работал больше.
Кто-нибудь знает, что может помочь мне улучшить производительность моего приложения?
Спасибо за ваши ответы:)