所以我有一个预先输入的输入字段,如下所示:
<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">
还有一个 Observable 可以帮助我提前输入建议。
this.segments = Observable.create((observer: any) => observer.next(this.segments))
.mergeMap((number: string) => this.suggestionsService.getSegmentSuggestions(this.editForm.get('segment').value);
我的问题是即使我的输入字段值长度小于 3,即使我设置了 Observable 也会发送请求typeaheadMinLength="3"
。当用户输入一个值然后快速删除一些字符(比我的去抖动时间快)然后尝试输入一个新值时,就会发生这种情况。我的建议 API 在收到长度小于 3 的输入值时失败,然后我的应用程序中断,我必须刷新页面以使其再次工作。我尝试将去抖时间设置为 0,然后我没有遇到这个问题,但这是一种不好的做法,它向我的 API 发送了太多请求。关于如何解决这个问题的任何想法?