Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 1x 10x 10x 10x 1x 13x | // taken from https://stackoverflow.com/a/71866336/ import {Component, OnDestroy} from "@angular/core"; import {Observable, Subject, takeUntil} from "rxjs"; @Component({ template: '' }) export abstract class BaseComponent implements OnDestroy{ // protected constructor() { } // Don't let the outside world trigger this destroy signal. // It's only meant to be trigger by the component when destroyed! private _destroy = new Subject<void>(); public destroy$ = this._destroy as Observable<void>; /** Lifecycle hook called by angular framework when extended class dies. */ ngOnDestroy(): void { this._destroy.next(); } } declare module 'rxjs/internal/Observable' { interface Observable<T> { dieWith(comp: BaseComponent): Observable<T>; } } Observable.prototype.dieWith = function<T>(comp: BaseComponent): Observable<T> { return this.pipe(takeUntil(comp.destroy$)); }; |