ufo*_*ttu 3 rest refresh http-delete angular-material angular
我有一个带有可扩展行的材质表(https://material.angular.io/components/table/examples),并且我想管理表本身的删除,因此我创建了一个带有触发删除事件的函数的删除按钮。api有效,记录被正确删除,但删除后表没有刷新,我想实现这种行为。这里有一个带有假 API 的 stackblitz:https ://stackblitz.com/edit/angular-comzph
我尝试在删除函数中调用 ngOnInt 并导航回同一路线,但没有任何反应......
deleteCustomer(id) {
this.api.deleteCustomer(id)
.subscribe(res => {
alert(`cliente rimosso`);
// TODO fix reload list after delete
// this.router.navigate['/clienti'];
this.ngOnInit();
}, (err) => {
console.log(err);
}
);
}
Run Code Online (Sandbox Code Playgroud)
我也尝试使用这个解决方案,但不起作用。我尝试使用 ngOnChange 和 ngOnDestroy,但也不起作用......
有人可以帮助我吗?
无需调用服务器获取更新后的数据并重新下载所有数据。只需调用此函数(如下)并删除数据源中的行(拼接)即可。从删除函数中传递记录 ID 以及您的 ID 所在的列名称,然后神奇的事情就发生了。我包括分页器。
我的StackBlitz for Angular Material Table有一个工作示例。另请参阅我用于创建和更新的UpdateDatatableService 。
// Remove the deleted row from the data table.
// Need to remove from the downloaded data first.
private deleteRowDataTable (recordId, idColumn, paginator, dataSource) {
this.dsData = dataSource.data;
const itemIndex = this.dsData.findIndex(obj => obj[idColumn] === recordId);
dataSource.data.splice(itemIndex, 1);
dataSource.paginator = paginator;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22253 次 |
| 最近记录: |