Angular 如何取消订阅观察员?

Angular 如何取消订阅观察员?,angular,angular7,angular8,Angular,Angular7,Angular8,有一位观察员: export class ListenerService { private action: Subject<IActionData> = new Subject(); apply(data?: IActionData) { this.action.next(data); } changes(): Observable<any> { return this.action.asObserv

有一位观察员:

export class ListenerService {

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

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

    changes(): Observable<any> {
        return this.action.asObservable();
    }
}
在destroy component中,我尝试取消设置此.sub:

它说:

错误类型错误:this.sub.unsubscribe不是函数 在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无法取消订阅,可以取消订阅:

例如:


this.sub=this.listener.changes.subscriberes:IActionData=>{};您是否将“取消订阅”拼错为“取消订阅”D可能是拼写错误,因为您可以看到给出的错误也是取消订阅xDI仍然获取:WordDictComponent.html:4错误类型错误:this.sub.unsubscribe不是一个函数您可以在stackblitz中发布代码并共享链接以获得更多信息吗
ngOnDestroy() {
   this.sub.unsubsribe();
 }
  subscription = new Subscription() ; 
this.subscription.add(this.listener.changes().subscribe((res: IActionData) => {}));



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