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
}
的 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 });
是否可以将单个验证器添加到 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
}
的 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 });