如何取消订阅观察者?

How to unsubscribe Observer?

有观察者:

export class ListenerService {

    private action: Subject<IActionData> = new Subject();

    apply(data?: IActionData) {
        this.action.next(data);
    }

    changes(): Observable<any> {
        return this.action.asObservable();
    }
}

使用是:

this.sub = this.listener.changes();
this.sub.subscribe((res: IActionData) => {});

在销毁组件中我试图取消设置 this.sub:

 ngOnDestroy() {
    if (this.sub) {
      console.log(this.sub);
      this.sub.unsubsribe();
    }
  }

它说:

ERROR TypeError: this.sub.unsubsribe is not a function at VersionsAddressComponent.ngOnDestroy

这应该可以完成工作:

this.sub = this.listener.changes().subscribe((res: IActionData) => {});
this.sub.unsubsribe();

等组件中的订阅值
sub: Subscription;

您的订阅将是

this.sub = this.listner.changes.subscribe((res: IActionData) => {});

而 onDestroy 将是

ngOnDestroy() {
   this.sub.unsubsribe();
 }

您必须使用 RXJS 订阅:

  subscription = new Subscription() ; 
this.subscription.add(this.listener.changes().subscribe((res: IActionData) => {}));



  ngOnDestroy(): void {
    this.subscription.unsubscribe();
  }

Observable不可退订,subscription可退订:

例如:

this.sub = this.listener.changes().subscribe((res: IActionData) => {});

然后你就可以取消订阅了,就像你做的那样:

ngOnDestroy() {
   this.sub.unsubsribe();
}