如何解决我的异步验证器未按角度调用
这是异步验证器,我知道它没有被调用,因为它没有控制台记录响应,并且函数isUsernameAvailable返回一个Observable
import {AbstractControl,AsyncValidatorFn,ValidationErrors} from '@angular/forms';
import {Observable} from 'rxjs';
import {map} from 'rxjs/operators';
import {CredentialAvailabilityService} from '../services/auth/credential-availability.service';
let credentialAvailabilityService: CredentialAvailabilityService;
export const usernameValidator = (control: AbstractControl): Observable<ValidationErrors | null> => {
return credentialAvailabilityService.isUsernameAvailable(control.value).pipe(
map(res => {
console.log(res);
// if res is true,username exists,return true
return res ? {usernameExists: true} : null;
// NB: Return null if there is no error
})
);
}
下面是我加载表格的地方
loadForm() {
this.form = this.formBuilder.group({
username: new FormControl(null,{
validators: [Validators.required,Validators.minLength(5),Validators.maxLength(20),alphaNumericValidator]
},[usernameValidator]),fullName: new FormControl(null,{validators: [Validators.required,Validators.maxLength(100),Validators.pattern('^[a-zA-Z ]*$')]}),email: new FormControl(null,Validators.email]}),password: new FormControl(null,Validators.minLength(8),Validators.maxLength(40)]}),confirmPassword: new FormControl(null,{validators: [Validators.required]}),telephoneNumber: new FormControl(null,{validators: [Validators.minLength(9),Validators.maxLength(14),Validators.pattern('^[0-9]*$')]}),roleCode: new FormControl(null,{validators: [Validators.minLength(6),Validators.maxLength(6),//image: new FormControl(null,{},mimeType)
},{
validator: MustMatch('password','confirmPassword')
});
//Todo : add an async validator to check if current username exists as user types on the field
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。