【问题标题】:node_modules/rxjs/Rx has no exported member 'merge'node_modules/rxjs/Rx 没有导出的成员“合并”
【发布时间】:2018-07-01 05:59:46
【问题描述】:

我的组件:

import {Observable, Subject , merge} from 'rxjs';
import {debounceTime, distinctUntilChanged, filter, map} from 'rxjs/operators';

focus$ = new Subject<string>();
click$ = new Subject<string>();

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

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

版本:

"rxjs": "^5.5.6",
"@angular/cli": "1.3.2",
"@angular/compiler-cli": "^4.2.4"

我得到错误:

node_modules/rxjs/Rx"' 没有导出的成员 'merge'

【问题讨论】:

  • 看看this
  • @Vikas this import { merge } from 'rxjs/observable/merge'; with small 'o' 解决了我的问题,非常感谢。如果您将其写为答案,将对其他人有所帮助。

标签: angular rxjs rxjs5


【解决方案1】:

merge 可以用作staticinstance 方法。

static方法使用
import { merge } from 'rxjs/observable/merge';

 return merge(debouncedText$, inputFocus$, clicksWithClosedPopup$).pipe(
            map(term => (term === '' ? states
                : states.filter(v => v.toLowerCase().indexOf(term.toLowerCase()) > -1)).slice(0, 10))
        );

对于instance 方法使用
import { merge } from 'rxjs/operators';

return Observable.merge(debouncedText$, inputFocus$, clicksWithClosedPopup$).pipe(
            map(term => (term === '' ? states
                : states.filter(v => v.toLowerCase().indexOf(term.toLowerCase()) > -1)).slice(0, 10))
        );

Live Demo

【讨论】:

    猜你喜欢
    • 2017-12-29
    • 2018-10-20
    • 2018-11-29
    • 2019-02-02
    • 2018-11-07
    • 2019-11-04
    • 2018-11-13
    • 2018-10-15
    • 2018-09-01
    相关资源
    最近更新 更多