【发布时间】:2023-04-03 07:25:01
【问题描述】:
我需要使用返回 Promise 的方法来验证表单字段。但它永远不会返回错误,因为 Promise 是异步的。
这是我的验证器:
static email(usersService: UsersService): ValidatorFn {
return (control: AbstractControl):{ [key: string]: boolean | null } => {
const email = control.value;
if (email) {
usersService.validateUsername(email).then(
(result) => { return result.username ? {emailExists: true} : null }
)
} else {
return null;
}
}}
这是我的 UsersService 方法
validateUsername(username: string): Promise<{"username": string}> {
return this.httpClient.post('/users/username_validation', {"username": username}).pipe(
map((body: {"username": string}) => body),
).toPromise()}
【问题讨论】:
-
你看过
AsyncValidatorFn吗? -
@KurtHamilton 我看过了。还是一样的问题
-
AsyncValidatorFn- 顾名思义 - 旨在进行异步验证。您能否发布您使用它的尝试,以便我们了解它为什么不适合您。 -
我尝试了与我发布的相同的方法,只是更改了返回类型
标签: angular typescript promise customvalidator