我该如何向 FormGroup 添加多个验证器?
一个 FormControl 可以接受一个验证器数组,但是 FormGroup 不能。除了创建单个自定义验证器之外,是否有其他解决方法?
我正在使用 rc4 版本。
一个 FormControl 可以接受一个验证器数组,但是 FormGroup 不能。除了创建单个自定义验证器之外,是否有其他解决方法?
我正在使用 rc4 版本。
可以通过Validators.compose()
组合多个验证器。
从API参考文档中得知:
compose(validators: ValidatorFn[]) : ValidatorFn
将多个验证器组合成一个函数,返回各个错误映射的联合。
{ validator: Validators.compose( [ this.validationFn1.bind(this), this.validationFn2.bind(this) ] ) }
- Pritesh Acharya实际上,FormGroup接受验证器数组,只是接口没有更新。将其转换为any即可。例如:
<any>[Validators.required, Validators.minlength(2)]
emailForm : FormGroup;
CreatEmailForm(){
this.emailForm = this.formBuilder.group({
emial:["example@email.com", { validators: [Validator.required , Validators.email ]}],
context:[null , Validator.required]})
}
let myGroup = this.formBuilder.group({}, {validator: Validators.compose([this.myCustomValidator(variable1, variable2)])});
只是为了让您了解myCustomValidator的作用,它返回一个验证器函数return (group: FormGroup): {[s: string]: boolean} => {}
我得到的错误是:Argument of type '((group: FormGroup) => { [s: string]: boolean; })[]' is not assignable to parameter of type 'ValidatorFn[]'.
- Maximlet myGroup = this.formBuilder.group({}, {validator: this.myCustomValidator(variable1, variable2)});
- Maxim