3

我想設置角2反應形式formArray對象的初始值。設置初始值角2反應formarray

即使用於設置表單值的json對象包含具有多個條目的數組值,也只顯示第一個條目,而「form.value」也只顯示第一個條目。

我使用語法(<FormGroup>this.myForm).patchValue(value, { onlySelf: true });來設置窗體上的初始值。

這裏是一個展示plunker問題:https://plnkr.co/edit/j1S80CmPBF1iHI5ViEia?p=preview

我使用https://scotch.io/tutorials/how-to-build-nested-model-driven-forms-in-angular-2的例子創建plunker。

任何想法我做錯了什麼?

+0

您已經使用由FormGroup組成的FormArray初始化'myForm'形式。我認爲這是另一個地址被忽略的原因。 –

回答

3

您正在將addresses設置爲一組窗體,並且在initAddress()方法中您只返回一個元素。 如果您向addresses陣列添加第二個電話,您將獲得第二個地址。

this.myForm = this._fb.group({ 
    name: ['', [Validators.required, Validators.minLength(5)]], 
    addresses: this._fb.array([ 
    this.initAddress(), 
    this.initAddress() 
    ]) 
}); 

這聽起來挺傻的,但是它會返回位於數組中的元素,如果你超出數組中元素的數量,你會得到一個空。

希望它有幫助。

+0

在我看來,一個更好的解決方案是遍歷數組,以找出需要多少個表單組,並將它們列在表單數組中,這些表單數組將作爲您的屬性的值(在您的案例「地址」中)。示例這裏:http://stackoverflow.com/questions/42550402/angular-2-reactive-nested-form – inadcod

+0

@inadcod在像我這樣的真實情況下需要一個後端服務調用,所以你不提前知道元素的數量在FormArray中... –