Я пытаюсь обновить свою таблицу данных, когда пользователь был отредактирован.
На данный момент источник данных обновлен, но на лицевой части изменений не видно. Я имею в виду, мои console.log(this.dataSource)
показывают хорошие данные. Но на веб-странице это не так.
Вот как я получаю свой источник данных (ngOnInit):
this.users.users().subscribe(data => {
this.dataSource.data = data;
});
Вот моя функция update
:
/**
* Update an user
* @param user The user to update
*/
update(user: User) {
// users = user's services
this.users.edit(user)
.subscribe(
userEdited => {
const userIndex = this.dataSource.data.findIndex(usr => usr.id === user.id);
console.log('Before change :', this.dataSource.data[userIndex], userIndex);
this.dataSource.data[userIndex] = userEdited;
console.log('After change :', this.dataSource.data[userIndex], this.dataSource.data);
}
);
}
РЕШЕНИЕ
Мне нужно вызвать функцию renderRows()
.
Поэтому я добавил ссылку на свою таблицу, например: <table mat-table #table [dataSource]="dataSource">
Затем я объявляю свойство @ViewChild
, например @ViewChild('table', { static: true }) table: MatTable<any>;
Затем :
const userIndex = this.dataSource.data.findIndex(usr => usr.id === user.id);
console.log('Before change :', this.dataSource.data[userIndex], userIndex);
this.dataSource.data[userIndex] = userEdited;
this.table.renderRows(); // <--- Add this line
console.log('After change :', this.dataSource.data[userIndex], this.dataSource.data);