Rxjs:[ts]类型'UnaryFunction <observable <{}>,Observable <string | =“” {} =“” >>“上不存在属性'pipe'。任何

时间:2018-10-10 11:33:10

标签: angular typescript rxjs angular5 rxjs5

我正在尝试实现ngbTypeAhead,但是使用5.5.5版本时RxJS出现了问题。我已经从rxjs 6版本中获取了这个示例。

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

当我尝试在焦点上提前输入时,出现类似的错误,

 *[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 :(得分:2)

您很可能在希望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';