Я использую библиотеку ng-select в своем проекте angular веб-приложения. Когда пользователь вводит условие поиска в поле поиска, вместо отображения значений путем сопоставления строки я хочу использовать службу поиска, которая возвращает мне значения, принимая строку поиска в качестве ввода.
<ng-select #Selector
[items]="displayList"
class="search-icon select-custom"
bindLabel="displayName"
notFoundText="No results found. Please try a different search criteria."
(search) = "onSearch($event)"
groupBy="type"
[closeOnSelect]="false"
(close)="onDropDownClosed()"
(change)="selectItem(selectedItem)"
[(ngModel)]="selectedItem">
<ng-template ng-option-tmp let-item="item" let-search="searchTerm">
<span class='display-name' [ngOptionHighlight]="search" [title]="item.displayName" *ngIf="!isViewMore(item)">
{{item.displayName}}
</span>
<span class="view-more" *ngIf="isViewMore(item)">
{{item.displayName}}
</span>
<div class='provider-specialty' *ngIf="shouldShowDepartmentName(item)">
{{getAreasOfExpertise(item)}}
</div>
</ng-template>
</ng-select>
Вот моя функция onSearch
onSearch(e) {
console.log(e)
this.loadData(e.term)
this.ngSelectComponent.detectChanges()
}
private loadData(searchTerm: string) {
this.searchService.getFindADocList(searchTerm).subscribe(response => {
this.findADocList = response
this.flattenList()
}, () => {
alert('An error occurred while trying to get find a doc list.')
})
}
Кажется, это не работает. Мне нужно получить список из службы и обновить существующий список, когда пользователь начнет печатать, а не ng-select, фильтрующий список. Как я могу это сделать?