在 mat table: new MatTableDataSource VS ChangeDetectorRef 中,哪个更适合用于刷新源数据?

in mat table: new MatTableDataSource VS ChangeDetectorRef , which one is better to use in order to refresh the source data?

当数据发生变化时,我们可以通过dataSource = new MatTableDataSource<PeriodicElement>([])更新table,然后将数据分配给datasource (this.datasource = data)将自动更新table。

我们也可以换用this.changeDetectorRefs.detectChanges()。 用哪个比较好?

我认为它会像我下面提到的那样工作,但我怀疑: 假设我们使用这两种方法:

方法一)new MatTableDataSource

方法二)changeDetectorRefs

所以

init data:

     data=[
    {id=1, price = 8, buy = 2},
    {id=2, price = 10, buy = 5},
    ]

and new data: 

    data=[
    {id=1, price = 8, buy = 2},
    {id=2, price = 20, buy = 5}, // price has changed (update)
    ]

然后:

如果我们使用方法 1:垫子 table 中的整行都会受到影响。

如果我们使用方法 2:只会更改 ID 为 2 的第二行,table 中的第一行不会更改。

是吗? 我想知道哪个更好用? (如果和我解释的一样,那么首选方法2)

基于 ChangeDetectorRef 比重新设置数据源更有效,因为它检测并更新唯一的数据已更改而不是所有数据。

因此,如果您已分页并且只有少数项目(比如 10 或 20 条记录),则它们之间没有太大区别。但是,如果您一次在网格中有更多数据,则第二种方法最适合您