All files / app/helpers/base base.component.ts

100% Statements 7/7
100% Branches 0/0
100% Functions 3/3
100% Lines 6/6

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