2017-08-25 31 views
1

是否有可能將單個驗證器添加到formGroup中,formGroup中的單個值發生更改時會立即調用它?角度格式:如果單個值發生變化,則驗證完整的表單組

我想應該是這樣的:

'group': this.formBuilder.group({ 
    'value1': [''], 
    'value2': [''], 
    'value3': [''] 
    }, [MyCustomValidator]), 

,但驗證器上的變化formGroup內部發生的調用,......我可以驗證單獨添加到每個字段,然後調用control.parent(這是工作),但這似乎不是一個合適的解決方案。

回答

1

在使用驗證器的這種方式,它的發射每次值1和值2獲得它們的值改爲:

this.fb.group({ 
      value1: ['', [this.validateService.isNumber]], 
      value2: ['', [this.validateService.isNumber, this.validateService.isLessThanHundred]], 
     }, { validator: this.validateService.countInputs }); 

plunker

+1

thx,沒有想到我必須評估每個領域,以便對團隊的評估也被解僱,但現在我明白了,這完全有意義 – Nickolaus

0

您可以從角度使用OnChanges接口。

ngOnChanges(changes: SimpleChanges){ 
    // call the validation method 
    // this.formBuilder.group.valid property 
} 

對於更詳細的文檔,請點擊here OR 使用從here

ngAfterViewChecked() { 
this.formBuilder.group.valueChanges.subscribe(()=> { 
    //do whatever you want; eg: enable the save or update button 
}); 
} 

AfterViewChecked請點擊here對角的生命週期掛鉤。

+0

這可能是一種選擇,但它似乎有點哈克,溶液@Vega是要走的路, – Nickolaus