2017-01-29 64 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

是的,这工作。有没有其他更清洁的方式来实现它? –