#autocomplete #observable #angular12
Вопрос:
Я пытаюсь реализовать функцию автозаполнения в Angular 12 и совершенно заблудился. У меня есть служба http, которая извлекает массив объектов типа ингредиентов.
public search(term: string): Observable<Ingredient[]> {
let url: string = `${this.apiBaseUrl}/ingredients/search?term=${term}`;
return this.http
.get<Ingredient[]>(url)
.pipe(tap((data: any) => (this.opts = data)));
}
В моем ingredient-list.component.html компонент У меня есть этот код для получения списка ингредиентов после каждой записи в поле ввода формы.
ingredients$!: Observable<Ingredient[]>;
searchForm = this.fb.group({
search: [''],
});
И в моем конструкторе :
this.ingredients$ = this.searchForm.get('search')!.valueChanges.pipe(
map((term: any) => term.trim().toLowerCase()),
startWith(''),
distinctUntilChanged(),
debounceTime(300),
switchMap((term) => this.ingredientsDataService.search(term))
);
Но с помощью этого кода моя служба никогда не запускается. Как будто ничего не происходит после изменения значений. Если я добавлю услугу подписки, она будет запущена, но я не смогу найти свои данные.
заранее благодарю вас за вашу помощь