angular unsubscribe example
/* Best practice is to create a base class and move generik handling to it */
import { Subscription, Observable } from 'rxjs';
import { OnDestroy } from '@angular/core';
export abstract class ComponentBase implements OnDestroy {
set subs(subscription: Subscription) {
this.subscriptioions.add(subscription);
}
private subscriptioions = new Subscription();
constructor() {};
subscribe(service: Observable<any>, successFn: (value: any) => void, errorHandler?: (value: any) => void) {
this.subs = service.subscribe(successFn, errorHandler || this.errorHandler);
}
ngOnDestroy() {
this.subscriptioions.unsubscribe();
}
private errorHandler(error) {
// TODO: generic error handling
}
}
/* implementation in a component */
// No need to explicitly subscribe or unsubscribe on destroy
const product$ = this.productService.getProducts(productId);
this.subscribe(product$, (product) => {
// TODO: use product
})