如何取消订阅观察者?
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();
}
有观察者:
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();
}