我已经创建了一个表,用户可以通过推入添加行
dataSource = new MatTableDataSource(this.ELEMENT_DATA);
this.ELEMENT_DATA.push(...);
this.table.renderRows();
并删除行(通过过滤数据源),这些操作就可以正常工作。
this.dataSource.data = this.dataSource.data
.filter(i => i !== elm)
.map((i, idx) => (i.position = (idx + 1), i));
在删除一行并添加另一行之后,ELEMENT_DATA数组会获取该项目,而表不会显示该项目。 谢谢。
答案 0 :(得分:0)
表检测更改策略为ChangeDetectionStrategy.OnPush
,因此对于显示新项,您需要更改数组引用
您的删除功能将返回带有已过滤数据数组的新数组。我认为您的add函数只是执行array.push(newItem)
,因此您可以通过这种方式添加新项目。这应该适合您的情况。
this.dataSource.data = [...this.dataSource.data, newItem]