0
所以我有一個自定義的異步驗證,像這樣:去抖輸入發送重複的值
import { Injectable } from '@angular/core';
import { FormControl } from "@angular/forms";
import { DefaultApi } from "../data/api/DefaultApi";
import { Observable } from 'rxjs/Rx';
import 'rxjs/Rx';
@Injectable()
export class ValidationService {
tempURL = "http://localhost/api/v1/validate";
oldVal: any;
constructor(private defaultApi: DefaultApi) {
}
generateValidator(validationType: string) {
return (control: FormControl) => {
return new Observable((obs: any) => {
control
.valueChanges
.debounceTime(400)
.mergeMap(value => {
return this.defaultApi.validationGet(validationType, value)
})
.subscribe(
data => {
obs.next(null);
obs.complete();
},
error => {
obs.next({'validationFailed': true});
obs.complete();
}
);
}).distinctUntilChanged();
}
}
}
的問題是,雖然它是「分組」的按鍵正確(即有人類型913會發出913沒有9 1 3 )它會多次發射它們(913,913,913)。我嘗試過移動獨特的UnicantChanged,但無濟於事。我錯過了明顯的東西嗎?
這擺脫了重複的請求,但它似乎不會增加任何延遲。這是爲了驗證輸入字段,所以我想等到用戶在打到服務器之前停止輸入一點點。 – fridder
在啓動observable之前,您可能需要設置一個超時時間,但去抖動將始終具有與剛剛輸出的輸出相同的輸入(例如某些類型爲1-2-3,它將發射3次),其中限制或限制輸出。 –