Я использую ng-select с Angular 7 и имею следующий компонент:
export class PostComponent {
selectedCategoryId: number;
categories$: Observable<CategoryModel[]>;
constructor(private categoryService: CategoryService) { }
ngOnInit() {
this.categories$ = this.getCategories('');
}
getCategories(term: string): Observable<CategoryModel[]> {
return this.categoryService.get(term).pipe(map((envelope: Envelope<CategoryMessage.Response>) =>
envelope.result.map((response: CategoryMessage.Response) => {
return {
id: response.id,
name: response.name
};
})));
}
}
categoryService
возвращает Categories
, где Category Name
содержит термин.
На шаблоне у меня есть следующее:
<ng-select
class="select"
[items]="categories$ | async"
[addTag]="true"
bindLabel="name"
bindValue="id"
[multiple]="false"
[(ngModel)]="selectedCategoryId">
</ng-select>
Вопрос
Как я могу вызвать API черезсервис, только когда набранное слово имеет 3 или более букв?Это позволит предотвратить получение тысяч категорий.
Как мне интегрировать мой код для использования typeahead?