每次在电子邮件表单中输入时,异步验证器都会将请求发送到 JSON。它检查现有的电子邮件,以输入每个字母。如何调用服务器并检查一次,而不是逐个字母?
isEmailExist(): AsyncValidatorFn {
return (control: AbstractControl): Observable<any> => {
return this.usersService.getUserByEmail(control.value).pipe(
debounceTime(2000),
map(users => {
if (users.some(user => user.email.toLowerCase() === control.value.toLowerCase())) {
return { isExist: true };
} else {
return null;
}
})
)
}
}
最佳答案
debounceTime 运算符必须在发出 keyup
事件的 Observable 之后通过管道传输。
您可以使用 fromEvent
运算符来实现这一点。
关于javascript - debounceTime 每次发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64855618/