import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { BehaviorSubject, Observable } from 'rxjs'; import { tap } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) export class DashboardService { // Observables private _data: BehaviorSubject; /** * Constructor * * @param {HttpClient} _httpClient */ constructor( private _httpClient: HttpClient ) { // Set the private defaults this._data = new BehaviorSubject(null); } // ----------------------------------------------------------------------------------------------------- // @ Accessors // ----------------------------------------------------------------------------------------------------- /** * Getter for data */ get data$(): Observable { return this._data.asObservable(); } // ----------------------------------------------------------------------------------------------------- // @ Public methods // ----------------------------------------------------------------------------------------------------- /** * Get data */ getData(): Observable { return this._httpClient.get('/api/summary').pipe( tap((response: any) => { this._data.next(response); }) ); } }