PrimeNG dataTable不会重新加载'表

时间:2017-10-19 08:42:40

标签: javascript angular typescript datatable primeng

我在模板中为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"
    }
  ]
}

1 个答案:

答案 0 :(得分:3)

在您的情况下,this.rowsobject,而不是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;

  }