takeUntil不适用于BehaviorSubject

时间:2018-10-21 22:49:12

标签: angular rxjs observable

我定义了以下BehaviorSubject:

  private posts = new BehaviorSubject<any[]>([]);

和初始化时:

ngOnInit() {
  this.posts
    .takeUntil(!this._postsLoaded)
    .subscribe(x => {
       this._postsLoaded = true;
        // do something
    });
}

但是它会出现以下错误,尽管它应该可以工作:

Property 'takeUntil' does not exist on type 'BehaviorSubject<any>'

2 个答案:

答案 0 :(得分:2)

如果要像链式语法那样使用,则还必须安装rxjs compat以便向后兼容。

payload

但是我建议使用管道

npm install --save rxjs-compat

样本闪电战

https://stackblitz.com/edit/rxjs-takeuntilexample?file=index.ts

答案 1 :(得分:0)

有两件事:

  1. 在RxJS 6中,您应该使用可点运算符。如果您必须使用旧的“修补程序”样式的运算符,则需要包括rxjs-compat软件包

  2. takeUntil()运算符将另一个Observable用作参数,因此无论如何您现在将抛出错误。

    也许您应该改用takeWhile()。如果您还想包括完成链的最后一个值,请参见此答案(RxJS takeWhile but include the last value