RxJS迁移5到6 - 取消订阅TakeUntil

时间:2018-05-30 14:08:53

标签: migration rxjs subscription rxjs6

在RxJS 6中取消订阅的最佳方式是什么?

我的老' RxJS 5代码看起来很

export class MyComponent implements OnInit, OnDestroy {
  private ngUnsubscribe: Subject<any> = new Subject();

  this.myService.myEventEmitter
    .takeUntil(this.ngUnsubscribe)
    .subscribe(this.onDataPolling.bind(this));

  public ngOnDestroy(): void {
    this.ngUnsubscribe.next();
    this.ngUnsubscribe.complete();
  }
}

在迁移到RxJS 6时,我运行rxjs-5-to-6-migrate并获得

this.myService.myEventEmitter.pipe(
  takeUntil(this.ngUnsubscribe))
  .subscribe(this.onDataPolling.bind(this));

但这不起作用,因为EventEmitter没有管道方法。

在RxJS 6中取消订阅的最佳方式是什么?

编辑:这在干净安装后确实有效,是在RxJS 6中取消订阅的最佳方式。

2 个答案:

答案 0 :(得分:7)

import { takeUntil } from 'rxjs/operators';

.pipe(takeUntil(this.destroyed$)).subscribe({YOUR_CODE})

这应该有帮助。

答案 1 :(得分:-2)

this.ngUnsubscribe.complete();

收件人

this.ngUnsubscribe.unsubscribe();
相关问题