8

在 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 中取消订阅的最佳方式。

4

2 回答 2

10
import { takeUntil } from 'rxjs/operators';

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

这应该会有所帮助。

于 2018-09-02T07:17:30.660 回答
-3
this.ngUnsubscribe.complete();

this.ngUnsubscribe.unsubscribe();
于 2018-07-09T14:47:42.350 回答