【发布时间】:2017-10-26 07:19:45
【问题描述】:
我正在使用带有 Angular 4 响应式表单的自定义异步验证器来检查是否已通过调用后端获取电子邮件地址。
但是,Angular 会调用验证器,该验证器会针对每个输入的字符向服务器发出请求。这会给服务器带来不必要的压力。
是否可以使用 RxJS observable 优雅地去抖动异步调用?
import {Observable} from 'rxjs/Observable';
import {AbstractControl, ValidationErrors} from '@angular/forms';
import {Injectable} from '@angular/core';
import {UsersRepository} from '../repositories/users.repository';
@Injectable()
export class DuplicateEmailValidator {
constructor (private usersRepository: UsersRepository) {
}
validate (control: AbstractControl): Observable<ValidationErrors> {
const email = control.value;
return this.usersRepository
.emailExists(email)
.map(result => (result ? { duplicateEmail: true } : null))
;
}
}
【问题讨论】:
标签: angular validation asynchronous rxjs