angular - Bruk verdi fra ekstern JSON-fil når du definerer NgModule


For øyeblikket bruker jeg en ganske vanlig løsning for å laste inn innholdet i en JSON-fil i Angular 5-applikasjonen min som jeg kan injisere i komponentene mine. Dette fungerer som beskrevet her under seksjonen Kjøringstid-konfigurasjon.

Jeg bruker en npm-pakke som må initialiseres i filen min app.module.ts

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        /* .... */
        [MsalModule.forRoot({
            clientID: "...",
            authority: "...",
            redirectUri: <I need the value here from the JSON file>
        })]
    ],
    providers: [
        ConfigService,
        {
            provide: APP_INITIALIZER,
            useFactory: (config: ConfigService) => () => config.load(),
            deps: [ConfigService],
            multi: true
        }
    ]
    bootstrap: [AppComponent]
})
export class AppModule { }

Jeg bruker Angular-CLI, og jeg vet at jeg kunne bruke forskjellige miljøfiler, men innholdet i JSON-filen kan endre seg etter at applikasjonen er bygget, og jeg kan ikke stole på det.

Finnes det en måte å bruke en verdi fra JSON-filen umiddelbart i NgModule-deklarasjonen, der jeg trenger den?

Svar #1

Et godt alternativ kan finnes her i dette StackOverflow-spørsmålet

Denne måten å laste JSON-filen på gjør at den kan lastes som et JS-objekt, og vi kan få tilgang til den før vi erklærer NgModule.

Svar #2

På denne måten kan JSON-filen lastes, og vi kan få tilgang til den før vi erklærer NgModule.

Json-fil:

{
    "apiUrl":"http://localhost:52361/"
}

Modulfil:

import Configuration from '../assets/config.json'; 

GridModule.forRoot(Configuration.apiUrl)