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
Creare una libreria CSS universale: Cards
Recuperare l'ultima versione di una release di GitHub
Utilizzare i primary constructor di C# per inizializzare le proprietà
Disabilitare automaticamente un workflow di GitHub (parte 2)
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Routing statico e PreRendering in una Blazor Web App
Utilizzare QuickGrid di Blazor con Entity Framework
Generare velocemente pagine CRUD in Blazor con QuickGrid
C# 12: Cosa c'è di nuovo e interessante
Utilizzare gRPC su App Service di Azure
Eseguire script pre e post esecuzione di un workflow di GitHub
Testare l'invio dei messaggi con Event Hubs Data Explorer