Angular MatTable在更新时不刷新
在对数据执行更新操作后,我正在尝试刷新Angular MatTable在更新时不刷新,angular,angular-material,mat-table,Angular,Angular Material,Mat Table,在对数据执行更新操作后,我正在尝试刷新mat表视图。但是,表视图仅在我第一次执行更新时正确刷新。每个后续更新操作都会延迟一个操作,如下所示: 更新第1行->无任何事情发生 更新第2行->更新第1行 更新第3行->更新第2行 等等 使用http.get服务加载表以获取数据。 更新操作调用http.post服务来保存数据,然后调用refreshData()方法。这两项服务都按预期工作 我正在使用ChangeDetectorRef强制进行更改检测 组件: dataSource:MatTableData
mat表
视图。但是,表视图仅在我第一次执行更新时正确刷新。每个后续更新操作都会延迟一个操作,如下所示:
refreshData()
方法。这两项服务都按预期工作
我正在使用ChangeDetectorRef
强制进行更改检测
组件:
dataSource:MatTableDataSource=new MatTableDataSource();
@ViewChild(MatSort)设置内容(排序:MatSort){
this.dataSource.sort=sort;
};
构造函数(private regionService:regionService,private changeDetectorRefs:ChangeDetectorRef){}
恩戈尼尼特(){
这是流行地区();
}
刷新数据(){
这是流行地区();
}
人口地区(){
this.regionService.getRegions().subscribe({
下一步:区域=>{
this.dataSource.data=区域;
this.changeDetectorRefs.detectChanges();
}
});
}
我在这里做错了什么?在mat table
的引用上使用RenderRows()
方法:
@ViewChild(MatTable, {static: false}) table : MatTable
this.table.renderRows()
或重新创建数据源对象:
populateRegions(){
this.regionService.getRegions().subscribe({
next: regions => {
this.dataSource = new MatTableDataSource(regions);
this.changeDetectorRefs.detectChanges();
}
});
}
在第一次更新后,您是否到达
this.dataSource.data=regions
?@MaihanNijat是。我已经使用日志检查了所有内容(在这里删除它们以保持代码简单),并按照预期工作。只有视图没有更新。然后调用refreshData()-请说明它是如何更新的确定。。。我发现了问题所在。save和get服务都是对后端服务器的http请求。由于它们几乎同时被调用(post->get),get服务在保存数据之前读取数据。我在两者之间增加了一个延迟,现在工作正常了。@DanielAndré增加延迟可能不是个好主意。这可能需要比预期更长的时间。等待一个呼叫,完成后再呼叫另一个。相同的行为。它第一次工作,但此后每次编辑都会延迟1次操作。在不同的浏览器中也尝试过。