Я использую тему и асинхронный канал , чтобы сделать http-запрос и поиск на основе поискового запроса. Для этого я использовал угловой учебник, в котором используется оператор switchmap и некоторое время задержки для метода keyup .
Он отлично работает для нажатий клавиш, но в первый раз я хочу сделать запрос вызова и показать список, тогда пользователь может искать, если хочет.
Но при вызове next оператор switchmap не запускается!
Ввод поиска:
<input type="text" placeholder="Search name" [(ngModel)]="searchTerm" (keyup)="callSearch()">
машинописный код:
products$: Observable<ProdSearch[]>;
searchProducts$ = new Subject<string>();
callSearch() {
if (this.searchTerm.length > 0 ){
this.searchProducts$.next(this.searchTerm);
}
}
Подписка:
this.products$ = this.searchProducts$.pipe(
debounceTime(1000),
distinctUntilChanged(),
switchMap(term => {
const options: PagingOptions = {};
options.limit = "5";
if (term.length !== 0) {
options.filterOptions = "name_search_" + this.searchTerm;
}
return this.service.getCollection<ProdSearch>(this.baseUrl + 'products/search', options)
.pipe(map(collection => collection.records))
})
Я хочу запустить switchmap в первый раз с кнопкой, но она не будет работать, и она будет работать только с нажатиями клавиш.
showLastProducts() {
this.showChangeList = true;
this.searchProducts$.next(''); // The switchmap won't work
}