У меня есть мат-таблица с сортировкой и пагинатором.мой компонент выглядит следующим образом: в ngOnInit я регистрируюсь в обработчике событий, который вызывает функцию populateAlertTableSource.Когда эта функция вызывается, данные действительно обновляются в таблице, а разработчик - нет, если я не наведу указатель мыши на таблицу (или не нажму на пагинатор).это происходит, когда я также удаляю строку из таблицы - строка не исчезает, а пагинатор не обновляется, пока я не наведу указатель мыши на таблицу (или не нажму на пагинатор).когда я вручную заполняю источник данных в его объявлении, это, кажется, не происходит, и pagiantor обновляется на месте.
export class SomeComponent implements OnInit {
AlertsCollection: any = [];
alertsDataSource = new MatTableDataSource(this.AlertsCollection);
@ViewChild('AlertsMatSort') alertSort: MatSort;
@ViewChild("AlertsPaginator") paginator: MatPaginator;
constructor(private alertsService: AlertsService, private alertsHubService: AlertsHubService,
private changeDetectorRefs: ChangeDetectorRef, private modalService: NgbModal) {}
ngOnInit() {
this.alertsHubService.subscribe(utils.url_root);
this.alertNotificationProxy = this.alertsHubService.generateProxy();
this.alertsService.registerProxy(this.alertNotificationProxy, 'updateDashboard', (message: any[]) => {
this.populateAlertTableSource(message)
});
}
ngAfterViewInit() {
this.alertsDataSource.paginator = this.paginator;
this.alertsDataSource.sort = this.alertSort;
}
populateAlertTableSource(message: any) {
this.AlertsCollection = message
this.alertsDataSource.data = this.AlertsCollection;
this.alertsDataSource.paginator = this.paginator;
this.alertsDataSource.sort = this.alertSort;
this.alertsTable.renderRows();
this.refresh();
}
deleteAlert(alert: any) {
this.alertsService.skipAlert(alert).subscribe(() => {
var index = this.AlertsCollection.indexOf(alert, 0);
if (index > -1)
this.AlertsCollection.splice(index, 1);
this.alertsDataSource.data = this.AlertsCollection;
this.alertsTable.renderRows();
},
(error: AppError) => {
console.log(error);
throw error;
}
);
}
refresh() {
this.changeDetectorRefs.detectChanges();
}
}