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