Миграция RxJS от 5 до 6 - отписаться с TakeUntil - PullRequest
0 голосов
/ 30 мая 2018

Каков наилучший способ отписаться в 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 голосов
/ 02 сентября 2018
import { takeUntil } from 'rxjs/operators';

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

Это должно помочь.

0 голосов
/ 09 июля 2018
this.ngUnsubscribe.complete();

К

this.ngUnsubscribe.unsubscribe();
...