Quando creiamo un progetto con Angular-CLI, la struttura che viene generata contiene la variabile environment all'interno della quale andiamo a mettere i dati di configurazione. Quando poi creiamo la build, questa variabile viene inclusa nel pacchetto di output e non possiamo modificarla. Questo significa che quando dobbiamo modificare un parametro di configrazione della nostra applicazione dobbiamo eseguire un nuovo deploy. Spesso questa strada è impraticabile, quidni dobbiamo ricorrere ad altri meccanismi per recuperare i parametri di configurazione. La tecnica più usata è quella di ricorrere ad una chiamata ajax per scaricare un json.
Quest'operazione in genere viene eseguita allo startup ed è necessario che Angular ne aspetti la conclusione prima di avviare l'applicazione. Grazie al token di injection APP_INITIALIZERS possiamo iniettare il nostro codice all'interno della pipeline di startup e, restituendo una Promise o un Observable, fare in modo che la pipeline non prosegua fino alla risoluzione della promise o fino al primo messaggio dall'observable.
@NgModule({ providers: [ { provide: APP_INITIALIZER, useFactory: initialize, multi: true, deps: [HttpClient] } ] function initialize(http: HttpClient) { return () => { return http.get<Configuration>("/config.json") .map(c => /*Processa configurazione*/); } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire undefined e partial nelle reactive forms di Angular
Definire stili a livello di libreria in Angular
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Utilizzare Copilot con Azure Cosmos DB
Effettuare il binding di date in Blazor
Sfruttare al massimo i topic space di Event Grid MQTT
Generare la software bill of material (SBOM) in GitHub
Utilizzare il trigger SQL con le Azure Function
Eseguire attività basate su eventi con Azure Container Jobs
Generare token per autenicarsi sulle API di GitHub
Utilizzare gRPC su App Service di Azure
C# 12: Cosa c'è di nuovo e interessante