То, что я хотел сделать, это реализовать окно предложения для пользовательского интерфейса. Цель здесь состоит в том, чтобы прослушать входные изменения, отфильтровать их, передать их вызову службы и вернуть результаты.
То, что я сделал, это
this.sub = this.form.controls['host'].valueChanges
.pipe(
tap(console.log),
filter((v) => v != null && v.length),
debounceTime(500),
distinctUntilChanged(),
switchMap(v => this.hostService.suggest(v)) //actuall REST call
).subscribe(value => {
this.hostSuggestions = value;
});
, однако это делает вызов REST только один рази перестает реагировать после этого. В качестве обходного пути я делаю это
this.sub = this.form.controls['host'].valueChanges
.pipe(
tap(console.log),
filter((v) => v != null && v.length),
debounceTime(500),
distinctUntilChanged(),
// switchMap(v => this.hostService.suggest(v))
).subscribe(value => {
this.hostService.suggest(value).subscribe(hosts => this.hostSuggestions = value);
});
, и это прекрасно работает, но я думаю, что это может быть сделано с использованием чистых операторов. Я прав?