2017-04-21 17 views
1

我有以下問題:在我的應用程序,我有一個嵌套formbuilder巨大的形式,它工作很好,一切,但是當用戶提交表單我想標記完整的形式爲感動(運行驗證),代碼是Angular 2 - 馬克嵌套formbuilder作爲觸摸

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

謝謝!這正是我正在尋找的,我無法贊成,但我標記你的答案被接受,真的非常感謝你。 – BlackJair