Pesquisa de site

angular - Usar valor de arquivo JSON externo ao definir NgModule


Atualmente, estou usando uma solução bastante comum para carregar o conteúdo de um arquivo JSON em minha aplicação Angular 5, que posso injetar em meus componentes. Isso funciona como está descrito aqui na seção Configuração em tempo de execução.

Estou usando um pacote npm que precisa ser inicializado no meu arquivo 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 { }

Eu uso Angular-CLI e sei que posso usar diferentes arquivos de ambiente, mas o conteúdo do arquivo JSON pode mudar após a construção da aplicação e eu não posso depender disso.

Existe uma maneira de usar um valor do arquivo JSON imediatamente na declaração do NgModule, onde eu preciso dele?

Resposta #1

Uma boa alternativa pode ser encontrada aqui nesta pergunta do StackOverflow

Dessa forma, o arquivo JSON pode ser carregado como um objeto JS e podemos acessá-lo antes de declarar o NgModule.

Resposta #2

Dessa forma, o arquivo JSON pode ser carregado e podemos acessá-lo antes de declarar o NgModule.

Arquivo Json:

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

Arquivo do Módulo:

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

GridModule.forRoot(Configuration.apiUrl)