【发布时间】:2019-07-28 16:17:12
【问题描述】:
我使用mat-table 来显示文章列表。我可以更改不同文章的价格。更新文章价格后,我将取回更新的文章(更新的资源)。我想刷新我的数据源,而不必调用 getArticles 并加载所有文章,因为我已经有了更新的文章。
所以我可以更新数据源以替换旧的更新项目,或者哪种方法是正确的?
private updateArticle(value: any, id: string): void {
this.dataService.patchArticle(id,price)
.subscribe(
article => {
this.dataService.getArticles(); //that is unnecessary, I have the updated article in variable 'article'
//this.replaceArticleDatasource(article) //update datasource
.subscribe(
data => {
this.articles = data;
this.dataSource = new MatTableDataSource(this.articles);
});
}
);
}
【问题讨论】:
-
说来话长。 AFAIK MatTableDataSource 在客户端运行。因此,即使您更改数据源并且一直刷新数据,您的表格的所有功能(例如分页、排序、过滤)也将在客户端工作,我猜所有表格功能都将被重置。因此,我认为更改数据源并不好。
-
因此,您必须自己编写一个位于 RxJS observable 上的数据源,以便在服务器端运行它并获得您想要的行为。我强烈推荐关注这篇文章:blog.angular-university.io/angular-material-data-table
标签: angular angular-material mat-table