我已经使我的自定义验证器运行良好,现在我添加了异步验证,但似乎没有调用。我的验证器做的第一步(仅用于测试)是它记录了一些东西但从未记录它。如果我把我的异步验证器放到同步验证器的数组,它可以工作,但当我将它移动到异步数组时,它不起作用。 形式定义:
form = new FormGroup({
email: new FormControl('',[
Validators.required
],[
MemberValidators.isEmailUnique
]),
firstName: new FormControl('',[
Validators.required,
MemberValidators.cannotContainSpace
]),. . . . .
和异步验证器
static isEmailUnique(c: AbstractControl): Promise<ValidationErrors> | null{
console.log('isEmail unique');
let users=['adam','jarda'];
let email=c.value;
return new Promise((resolve,reject) =>{
setTimeout(() =>{
if (users.indexOf(email)>0){
resolve({isEmailUnique: true});
console.log('Email not unique');
}
else
resolve(null);
},1000);
});
}
感谢您的帮助。
答案 0 :(得分:0)
我用FormBuilder重建它并且工作正常。问题可能在语法中的某处。
this.form=fb.group({
firstName: ['', Validators.minLength(2)],
lastName: ['', Validators.minLength(2)],
email: ['', [Validators.email, Validators.required],[MemberValidators.isEmailUnique]],
notified: ['', Validators.required],
locale: ['',],
password: ['', Validators.required, Validators.minLength(8)],
passwordConfirm: ['', Validators.required],
},{validator:[ MemberValidators.passwordNotMatches]}
)