Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular MatTable在更新时不刷新_Angular_Angular Material_Mat Table - Fatal编程技术网

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表
视图。但是,表视图仅在我第一次执行更新时正确刷新。每个后续更新操作都会延迟一个操作,如下所示:

  • 更新第1行->无任何事情发生
  • 更新第2行->更新第1行
  • 更新第3行->更新第2行
  • 等等

    使用http.get服务加载表以获取数据。 更新操作调用http.post服务来保存数据,然后调用
    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次操作。在不同的浏览器中也尝试过。