我正在實施註冊頁面。我想檢查用戶名是否已經存在。我試圖實現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希望這可以幫助 –