UNPKG

state-t

Version:

`StateTService` est un service générique conçu pour gérer les états de composants dans une application Angular. Il permet de stocker, accéder et manipuler des états de manière typée, flexible et modulaire.

85 lines (80 loc) 2.52 kB
import * as i0 from '@angular/core'; import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; class StateTService { constructor() { this.componentStates = new Map(); this.stateSubjects = new Map(); } /** * setState(componentId : string, state : T) : void * @param componentId * @param state */ setState(componentId, state) { this.componentStates.set(componentId, { state }); if (!this.stateSubjects.has(componentId)) { this.stateSubjects.set(componentId, new BehaviorSubject(state)); } this.stateSubjects.get(componentId)?.next(state); } /** * getStateOtherType(componentId: string, typeFilter?: new (...args: []) => H) * @param componentId * @param typeFilter * @returns */ getStateOtherType(componentId, typeFilter) { const state = this.getState(componentId); if (state && typeFilter && !(state instanceof typeFilter)) { return undefined; } return state; } /** * getState(componentId: string) * @param componentId * @returns */ getState(componentId) { const stateWithMode = this.componentStates.get(componentId); return stateWithMode?.state; } /** * getStateObservable(componentId: string) * @param componentId * @returns */ getStateObservable(componentId) { return this.stateSubjects.get(componentId)?.asObservable(); } /** * getAllStates() * @returns */ getAllStates() { return this.componentStates; } /** * delete all state */ clearAllStates() { this.componentStates.clear(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StateTService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StateTService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StateTService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [] }); /* * Public API Surface of state-t */ /** * Generated bundle index. Do not edit. */ export { StateTService }; //# sourceMappingURL=state-t.mjs.map