Angular typeahead с RxJs switchMap подписаться - PullRequest
0 голосов
/ 11 мая 2018

Использование Угловой начальной загрузки Typeahead Плагин для отображения цветов.Но мне нужно разрешить циклические ссылки, как в других местах, которые я использовал.Я не могу сделать это с оператором Switchxap RxJs.Есть ли другой возможный способ решения?

(<any>window).resolveJsonReferences(this.colorService.searchColors(term))

Typeahead с RxJs SwitchMap

 search = (text$: Observable<string>) =>
    text$
    .debounceTime(200)
    .distinctUntilChanged()
    .do(() => this.searching = true)
    .switchMap(term =>
        this.colorService.searchColors(term) // Json result needs circular reference resolver
        .do(() => this.searchFailed = false)
        .catch(() => {
            this.searchFailed = true;
            return Observable.of([]);
        }))
    .do(() => this.searching = false);

В других местах

return this.colorService.searchColors(term)
        .subscribe(
        res => {               
            this.colors= this.utilities.resolveJsonReferences(res);
        },
        err => {               
        });

1 Ответ

0 голосов
/ 11 мая 2018

Просто map значение через ваш резольвер.

.map((term) => this.utilities.resolveJsonReferences(term))

Все вместе:

search = (text$: Observable<string>) =>
    text$
    .debounceTime(200)
    .distinctUntilChanged()
    .do(() => this.searching = true)
    .switchMap(term =>
        this.colorService.searchColors(term) // Json result needs circular reference resolver
        .map((term) => this.utilities.resolveJsonReferences(term))
        .do(() => this.searchFailed = false)
        .catch(() => {
            this.searchFailed = true;
            return Observable.of([]);
        }))
    .do(() => this.searching = false);
...