我有一个密码FormControl,有几个自定义验证器(下面只有一个):
password = new FormControl('',
[Validators.required, Validators.minLength(8),
this.passwordHasLowerCaseValidator.bind(this)]);
passwordHasLowerCaseValidator(control: FormControl) {
return (...);
}
我希望从服务调用自定义验证器,以便重构我的注册组件,如
constructor(private customValidators:CustomValidators){}
password = new FormControl('',
[Validators.required, Validators.minLength(8),
this.customValidators.passwordHasLowerCaseValidator.bind(this)]);
我已经尝试了这个并且它犯了错误,我想这个表单要么无法访问它们,要么无法将数据传递给它..
谢谢!
答案 0 :(得分:1)
如果更改验证器以返回验证器函数,如
passwordHasLowerCaseValidator(customValidators: CustomValidators) {
return (control: FormControl) => {
return (...);
// here you can access "customValidators"
}
}
并像
一样使用它constructor(private customValidators:CustomValidators){}
password = new FormControl('',
[Validators.required, Validators.minLength(8),
this.customValidators.passwordHasLowerCaseValidator(customValidators).bind(this)]);
你应该得到理想的行为。