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

Angular forms: validate complete form group if a single value changes

是否可以将单个验证器添加到 formGroup,只要 formGroup 中的单个值发生变化,它就会被调用?

我认为它应该是这样的:

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

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

您可以使用 angular 中的 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 以获得 angular 个生命周期挂钩。

在这种使用验证器的方式中,每次 value1 和 value2 更改它们的值时都会触发它:

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

plunker