我在模板中为dataTable [value]="rows[indexString]"
。
在组件中
rows: any = {}
newrow: any = {}
...
addNewRow(key: string) {
let rows = {...this.rows}
let newrow = {_key: Math.floor(Math.random() * 10000), title: this.newrow.title}
if (rows[key]) {
rows[key].push(newrow)
} else {
rows[key] = newrow
}
this.rows = rows
}
基本上是关注here
的教程只有表格中呈现的第一行,在模板{{rows | json}}
中,一切都在那里:
{
"210386": [
{
"_key": 9173,
"title": "Row one"
},
{
"_key": 6201,
"title": "Row Two"
}
]
}
答案 0 :(得分:3)
在您的情况下,this.rows
是object
,而不是array
。
我认为问题可能是您复制this.rows
的方式。您正在使用spread运算符从this.rows
副本创建新对象。你想要的是一个阵列。
请改为尝试:
let rows = [...this.rows]
编辑: 我会完成我的答案。 问题是引用复制行并重新分配它们时丢失了对象。然后观察变化就不会发生。
您需要复制的是您当前使用的阵列。不是整个对象。
addNewRow(key: string) {
let newrow = {_key: Math.floor(Math.random() * 10000), title: this.newrow.title}
let rows = [];
if (this.rows.hasOwnProperty(key)) { // check is key already exists
rows = [...this.rows[key], newRow];
} else {
rows = [newRow]
}
this.rows[key] = rows;
}