Angular表单:如果单个值发生更改,则验证完整表单组

时间:2017-08-25 14:35:14

标签: angular angular-forms angular-validation

是否可以向formGroup添加一个验证器,只要formGroup中的单个值发生更改,就会调用该函数?

我认为它应该是这样的:

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

但是在formGroup内发生的更改时没有调用验证器,...我可以单独将验证器添加到每个字段,然后调用control.parent(这是有效的),但这似乎不就像一个合适的解决方案。

2 个答案:

答案 0 :(得分:1)

通过这种使用验证器的方式,每当value1和value2更改其值时,它就会被触发:

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

plunker

答案 1 :(得分:0)

您可以使用角度的OnChanges界面。

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

有关详细信息,请点击here 要么 从here

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

请点击here以获取角度生命周期挂钩。