在 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 条记录),则它们之间没有太大区别。但是,如果您一次在网格中有更多数据,则第二种方法最适合您
当数据发生变化时,我们可以通过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 条记录),则它们之间没有太大区别。但是,如果您一次在网格中有更多数据,则第二种方法最适合您