Новичок в RXJS и пытается выяснить, как настроить автозаполнение.
Прямо сейчас у меня есть компонент typeahead
, который обрабатывает элемент input
и выдает значение ('term').
В моем filters
компоненте (родительском) я управляю логикой совершения вызовов API и работы с данными (через службу). У меня есть функция в этом компоненте, которая вызывается с изменением term
и выполняет вызов API. Возникли проблемы с настройкой этого с некоторыми примерами, которые я видел, а именно, SwitchMap, кажется, необходим для правильных вызовов.
В основном функция должна делать 2 вещи: 1. Отправлять запросы в API и обрабатывать возвращаемые данные.
2. Вставьте его в список, который будет отображаться в качестве параметров автозаполнения.
Прямо сейчас это выглядит так, но есть синтаксическая ошибка:
public IdTypeahead(term: string) {
this.model.NctIdList = [];
if (!(term && term.length > 0)) {
return;
}
this.searchCriteria.nctIdPrefix = term;
this.searchCriteria.aggregateOn = 'nctid';
// this.NctIdList = of(term)
let input$ = of(term)
.switchMap(() => from(this.filterService.GetNctIdFilterData(this.searchCriteria))
.subscribe((result: any) => {
this.NctIdList.push(result.nctid)
return result.nctid
}
)
}
Раньше это выглядело так, но делали неправильные звонки (звонки запаздывали):
public IdTypeahead(term: string) {
this.model.NctIdList = [];
if (!(term && term.length > 0)) {
return;
}
this.searchCriteria.nctIdPrefix = term;
this.searchCriteria.aggregateOn = 'nctid';
this.NctIdList =
this.filterService.GetNctIdFilterData(this.searchCriteria).pipe(
map((result: any) => result.nctid) as Observable<string[]>
}