2017-01-29 66 views
0

我有一個形式陣列的形式:角2 patchValue表格陣列

this.myForm = this._fb.group({ 
     id: [this.model.id], 
     customer_id: [this.model.customer_id], 
     orderlines: this._fb.array([]) 
    }); 

形式數組:

return this._fb.group({ 
     id: [orderline.id], 
     order_id: [orderline.order_id], 
     factor: [orderline.factor], 
    }) 

現在我想內的改變因子字段的值方法setFactor(i)。我是表單數組orderlines的索引。

setFactor(i) { 
    this.myForm['orderlines'[i]].patchValue({ factor: 99 }) <--- no error but no change in form 
    this.myForm.patchValue({ orderlines[i].factor: 99 }) <-- error 

} 

如何使用patchValue更改表單數組中的值?

編輯

這會給我,我想改變的值:

console.log(this.myForm['controls']['orderlines']['controls'][i]['controls']['factor'].value); 
+0

那些企圖既不是有道理的。 ''orderlines'[i]'正在索引字符串''orderlines'',所以你最終得到了例如'this.myForm [ 'O']'。在第二個版本中,大概錯誤的是,在編入索引之前,您沒有在任何地方定義過'orderlines'(就像您已經展示的那樣)。此外,該控件數組是空的,因此不清楚索引到它會達到什麼目的。你可以給[mcve]? – jonrsharpe

回答

2

以下工作:

this.myForm['controls']['orderlines']['controls'][i]['controls']['factor'].patchValue(99) 
+0

是的,這工作。有沒有其他更清潔的方式來實現它? –