我有两个定制validator
在reactive form
,我调用下面函数来创建在部件的构造形式为:多个定制检验角2
private createForm(): void {
this.passwordUpdateForm = this.formBuilder.group({
newpassword : [null, Validators.required],
passwordconfirm: [null, Validators.required]
},
{
validator: [PasswordValidation.PasswordMatch, PasswordValidation.PasswordRule] // validation method
});
}
PasswordValidation是具有类两个功能如下
export class PasswordValidation {
public static PasswordMatch(control: AbstractControl) {
let password = control.get('newpassword'); // to get value in input tag
if(password){
let confirmPassword = control.get('passwordconfirm').value; // to get value in input tag
if (password.value !== confirmPassword) {
control.get('passwordconfirm').setErrors({ ['passwordmatch'] : true});
}else {
return null;
}
}
}
public static PasswordRule(control: AbstractControl) {
let password = control.get('newpassword').value; // to get value in input tag
let pattern = new RegExp('^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#[email protected]$%^&*-]).{8,64}');
if (!pattern.test(password)) {
control.get('newpassword').setErrors({ ['passwordrule'] : true});
}else if (password.toLowerCase() === 'something') {
control.get('newpassword').setErrors({ ['passwordrule'] : true});
}else {
return null;
}
}
}
每个自定义验证工作正常分别是这样
validator: PasswordValidation.PasswordMatch
或本
validator: PasswordValidation.PasswordRule
但在阵列状
validator: [PasswordValidation.PasswordMatch, PasswordValidation.PasswordRule]
得到错误this.validator is not a function
使用他们与不工作,我没有任何想法,请帮帮我。
你可以尝试用'Validators.compose()',它接受多个验证对一个领域。 – Niladri
是使用compose():验证器:Validators.compose([[PasswordValidation.PasswordMatch,PasswordValidation.PasswordRule])} – Vega
@Vega不起作用 – Parid0kht