Rxjs: [ts] Свойство pipe не существует для типа UnaryFunctionНаблюдаемый>».любой - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь реализовать ngbTypeAhead, но у меня проблема с RxJS, используя версию 5.5.5.Я взял этот пример из версии rxjs 6.

"rxjs": "^5.5.2" and
 angular "^5.0.1",
"typescript": "~2.6.1",

, когда я пытался реализовать typeahead на фокусе, получая ошибку вроде

 *[ts] Property 'pipe' does not exist on type 'UnaryFunction<Observable<{}>, Observable<string | {}>>'.
any*


search2 = (text$: Observable<string>) => {
    const debouncedText$ = text$.pipe(debounceTime(200), distinctUntilChanged());
    const clicksWithClosedPopup$ = this.click$.pipe(filter(() => !this.instance.isPopupOpen()));
    const inputFocus$ = this.focus$;

    let mer = merge(debouncedText$, inputFocus$, clicksWithClosedPopup$);
    debugger;
    return mer.pipe(
      map(term => (term === '' ? this.roadList
        : this.roadList.filter(v => v.toLowerCase().indexOf(term.toString().toLowerCase()) > -1)).slice(0, 10))
    );
  }

Может кто-нибудь, пожалуйста, помогите мне понять этовопрос как переписать вышеуказанный метод search2?

1 Ответ

0 голосов
/ 10 октября 2018

Скорее всего, вы импортируете merge в качестве оператора, в то время как вы хотите merge, чтобы он назывался "Наблюдаемый метод создания" и поступал непосредственно из 'rxjs'.

Поэтому проверьте, действительно ли вы используете этот импорт в RxJS 6:

import { merge } from 'rxjs';

... вместо того импорта, который импортирует merge оператор, который вам не нужен:

import { merge } from 'rxjs/operators'; // This imports just the operator

Для RxJS 5 используйте следующее:

import { merge } from 'rxjs/observable/merge';
...