首页 > 解决方案 > 如何取消订阅观察者?

问题描述

有观察者:

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();
    }
  }

它说:

错误类型错误:this.sub.unsubsribe 不是 VersionsAddressComponent.ngOnDestroy 的函数

标签: angularangular7angular8

解决方案


组件中的订阅值,例如

sub: Subscription;

你的订阅将是

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

而 onDestroy 将是

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

推荐阅读