2017-04-21 4 views
1

私のアプリケーションでは、私のアプリケーションではフォームのネストされた巨大なフォームビルダを持っていて、それは素晴らしいものですが、ユーザーがフォームを提出したとき、 (検証を実行するには)触れて、コードが角度2 - 入れ子になっているフォームビルダーをタッチして表示

constructor(private fb: FormBuilder) { 
    this.form= fb.group({ 
     field1: [null], 
     field2: [null], 
     nestedForm1: fb.group({ 
      field3: [null, Validators.required], 
      field4: [null] 
     }), 
     nestedForm2: fb.group({ 
      field5: [null, Validators.required], 
      field6: [null, Validators.required] 
     }) 
    }); 
} 

ですそして、私が実行したとき:

this.form.markAsTouched(); 

のみフィールド1 &フィールド2がマークを取得、私はそれを行うには欠けている方法はありますか?

答えて

6

あなたは以下のようなカスタムメソッドを作成することができます

setAsTouched(group: FormGroup | FormArray) { 
    group.markAsTouched() 
    for (let i in group.controls) { 
    if (group.controls[i] instanceof FormControl) { 
     group.controls[i].markAsTouched(); 
    } else { 
     this.setAsTouched(group.controls[i]); 
    } 
    } 
} 
+0

感謝を!これはちょうど私が探していたものです、私はupvoteすることはできませんが、私はあなたの答えを受け入れ、本当に本当にありがとうございました。 – BlackJair

関連する問題