服务

时间:2016-08-18 02:15:35

标签: validation angular angular2-forms angular2-services

我有一个密码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)]);

我已经尝试了这个并且它犯了错误,我想这个表单要么无法访问它们,要么无法将数据传递给它..

谢谢!

1 个答案:

答案 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)]);

你应该得到理想的行为。