使用IntervalObservable时"takeWhile不是函数"

akc*_*soy 7 rxjs typescript angular

我在Angular 2代码中有这个简单的设置:

IntervalObservable.create(5000)
  .takeWhile(() => this.spinnerOn) // only fires when component is alive
  .subscribe(() => {
    this.httpService.pollResults()
      .subscribe(data => {
        console.log(data);
      });
  });
Run Code Online (Sandbox Code Playgroud)

代码编译,我可以看到我的IDE(IDEA)中的rxjs节点模块使用的takeWhile.d.ts.但是当应用程序运行时,我在控制台中看到此错误:

ERROR TypeError: __WEBPACK_IMPORTED_MODULE_3_rxjs_observable_IntervalObservable__.a.create(...).takeWhile is not a function
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Saj*_*ran 22

你需要导入takeWhile运算符:

import 'rxjs/add/operator/takeWhile';
Run Code Online (Sandbox Code Playgroud)

如果您使用的是rxjs 5.5及以上版本

import { takeWhile } from 'rxjs/operators';
Run Code Online (Sandbox Code Playgroud)

  • 我正在使用rxjs 5.5.2并且第二次导入对我不起作用.使用第一种方法 (7认同)
  • 我使用相同的'v5.5.2'并得到第二个错误.第一个也为我解决了.谢谢@Sajeetharan和Nouman (4认同)