我正在尝试添加一个新的 AsyncValidator 来检查用户的电子邮件是否已存在于数据库中。以下是可能的验证器:
export class UniqueEmailValidator implements AsyncValidator {
constructor(private webService: WebWrapperService) {}
validate(ctrl: AbstractControl): Promise < ValidationErrors | null > | Observable < ValidationErrors | null > {
return this.webService.isEmailExistEx(ctrl.value)
.pipe(
map(res => {
console.log("get response" + res);
if (res) {
return { 'uniqueEmail': true};
}
return null;
})
);
}
}
服务中的函数 isEmailExistEx 会向服务器发送一个 post 请求。
isEmailExistEx(email: string): Observable<boolean> {
this.http.post(this.baseUrl + "auth/verify",
{
"email": email
})
.subscribe(
(val: any) => {
if (!val.result) {
return of(false);
} else {
return of(true);
}
},
response => {
return of(false);
},
() => {
return of(false);
});
}
它报告以下错误:
声明类型既不是“void”也不是“any”的函数必须返回一个值。
我应该如何修改这个函数?
相关分类