2017-10-19 133 views
0

我有[value]="rows[indexString]"模板中的dataTable。 在組件PrimeNG dataTable不能'重新加載'表

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" 
    } 
    ] 
} 

回答

3

在你的情況,this.rowsobject,而不是array

我認爲問題可能是您複製this.rows的方式。您正在使用傳播運算符從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; 

    } 
+0

需要進行陣列的對象...... – miff

+0

我編輯更精確 –

+0

只是在正確的時間,這項工作完美。我放棄了P-dataTable並啓動了'正常'表格,顯然是過度思考,這是一個很好而簡單的解決方案 – miff