2017-10-06 12 views
0

FormArrayコントロールに初期値を追加しようとしています。私はこのコードを使用しています:Ionic 2のFormArrayコントロールに初期値を設定する方法は?

if(this.navParams.get('kids').length > 1) { 
     for(let i=0; i<this.navParams.get('kids').length - 1; i++) { 
      this.addChild(); 
     } 
     for(let i=0; i<this.navParams.get('kids').length; i++) { 
      this.registrationForm.controls['child'][i]['child_first_name'].setValue("asdasdasd"); 
     } 
    } 

しかし、私は間違った方法でsetValueメソッドを使用していると思います。 は、私はこのエラーが生じています:ここで

Error

はにaddChildためのコードである:ここで

addChild() { 
    // add child to the list 
    const control = <FormArray>this.registrationForm.controls['child']; 
    control.push(this.initChild()); 
    // console.log(this.registrationForm.value); 
} 

はinitChild方法です:

initChild() { 
    // initialize child form 
    return this.formBuilder.group({ 
     child_first_name: ['', Validators.compose([Validators.maxLength(255), Validators.required])], 
     child_last_name: ['', Validators.compose([Validators.maxLength(255), Validators.required])], 
     child_gender: ['', Validators.compose([Validators.required])], 
     child_bdate: ['', Validators.compose([Validators.required])] 
    }); 
} 

私は等のための解決策を見つけるしていますほぼ2日間。これは初めてのIonicの使用です。どんな助けもありがとう。ありがとう、SOコミュニティ!

+0

addChildメソッドのコードを追加できますか? – yurzui

+0

質問を編集し、addChildメソッドとinitChildメソッドを追加しました。ありがとう! –

答えて

1
それを行うの

簡単な方法は以下のようgetメソッドを使用している:

this.registrationForm.get(['child', i, 'child_first_name']).setValue('asdasdasd'); 

あなたがコントロールのプロパティを使用する場合は、次のようにそれはなります。

((this.registrationForm.controls['child'] as FormArray).controls[i] as FormGroup).controls['child_first_name'].setValue("asdasdasd"); 

もう一つの選択肢は、次のようになり

this.registrationForm.patchValue({ 
    child: [...Array(i), { child_first_name: 'asdasdasd' }] 
}); 

Stackblitz Example

+0

うわー!あまりにも@yurzuiありがとうありがとう:)あなたは私の一週間を保存する!ハハ! :D –

関連する問題