2017-01-29 2 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). I является индексом порядковых строк массива формы.

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 для изменения значения в массиве форм?

EDIT

это даст мне значение, я хочу изменить:

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

Ни одна из этих попыток имеет смысл. '' orderlines '[i] 'индексируется в строку' 'orderlines'', так что вы закончите, например. 'This.myForm [ 'о'] '. Во второй версии, по-видимому, ошибка заключается в том, что вы не определили «упорядоченные позиции» где-нибудь (насколько вы показали) до индексации в нее. Кроме того, этот массив управления пуст, поэтому неясно, что именно приведет к его индексированию. Не могли бы вы дать [mcve]? – jonrsharpe

ответ

2

следующие работали:

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

Да, это сработало. Есть ли другой более чистый способ достичь этого. –

Смежные вопросы