所以我有一個看起來像這樣的一個預輸入輸入字段:NGX-引導預輸入可觀察的
<input formControlName="segment"
[typeahead]="segments"
(typeaheadLoading)="segmentsLoading($event)"
(typeaheadNoResults)="segmentsNoResults($event)"
(typeaheadOnSelect)="segmentOnSelect($event)"
typeaheadOptionsLimit="10"
typeaheadMinLength="3"
typeaheadWaitMs="300"
[typeaheadItemTemplate]="customSegmentTemplate"
class="form-control">
而且可觀察到的,這有助於我獲得預輸入的建議。
this.segments = Observable.create((observer: any) => observer.next(this.segments))
.mergeMap((number: string) => this.suggestionsService.getSegmentSuggestions(this.editForm.get('segment').value);
我的問題是可觀察到的發送請求,即使我的輸入字段值長度小於3,即使我已經設置typeaheadMinLength="3"
。這發生在用戶鍵入一個值然後快速刪除一些字符(比我的去抖時間更快),然後嘗試輸入一個新值。我的API建議失敗,當它收到長度小於3的輸入值,然後我的應用程序中斷,我不得不刷新頁面,使其再次工作。我試圖設置去抖時間爲0,然後我沒有這個問題,但這是一個不好的做法,它發送了太多的請求到我的API。有關如何解決這個問題的任何想法?
我添加了這樣的catch塊 'this.segments = Observable.create((observer:any)=> observer.next(this.segments)) .mergeMap((number:string)=> this.suggestionsService。 getSegmentSuggestions(this.editForm.get('segment')value)) .catch((error:any)=> { });' 這解決了我現在的問題,但我確定有比這更好的解決方案。 – banana
我有這個完全相同的問題,你有沒有想到它? – Simon
@Simon我在上面的評論中解決了它,至少在我找到更優雅的解決方案之前,它至少在工作。但更優雅的解決方案尚未找到。 – banana