我正在实施注册页面。我想检查用户名是否已经存在。我试图实现asyncvalidator,但每次用户输入一个字符时都会调用服务器,您是否可以在下面的代码中帮助添加一些延迟,以便在用户停止键入一段时间后仅以用户名称调用服务器?我读了一些可观察的debounceTime,但无法使其工作。可观察的添加延迟 - 角2
usernameAsyncValidator(control: FormControl): Observable<any> {
return new Observable((obs: any) => {
return this.http.get('http://localhost:3000/exists?name='+control.value)
.debounceTime(400) <<-----------THIS IS NOT WORKING
.distinctUntilChanged() <<-----------THIS IS NOT WORKING
.subscribe(
data => {
if (data.status === 200) {
obs.next({'userNameTaken': true});
} else {
obs.next(null);
}
obs.complete();
},
() => {
obs.next(null);
obs.complete();
});
});
}
请让我知道,如果我可以更好地解释。
- 感谢
这里是一个使用角度团队debounceTime的示例https://angular.io/docs/ts/latest/guide/server-communication.html#!#more-observables希望这可以帮助 –