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

问题描述 投票:7回答:2

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

migration rxjs subscription rxjs6
2个回答
7
投票
import { takeUntil } from 'rxjs/operators';

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

这应该有所帮助。


-2
投票
this.ngUnsubscribe.complete();

this.ngUnsubscribe.unsubscribe();
© www.soinside.com 2019 - 2024. All rights reserved.