Outils pour utilisateurs

Outils du site


web:javascript:angular:configuration

Configuration

Créer une interface qui décrit la configuration souhaitée:

export interface IAppConfig {
  api: {
    baseUrl: string;
  };
}

Créer un service de configuration qui a deux méthodes, une pour charger le fichier de configuration et l'autre pour l'obtenir:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
 
import { IAppConfig } from './app-config.interface';
 
@Injectable()
export class AppConfigService {
  private appConfig: IAppConfig;
 
  constructor(private http: HttpClient) {}
 
  public loadAppConfig(): Promise<void> {
    return this.http
      .get<IAppConfig>('/assets/data/appConfig.json')
      .toPromise()
      .then((config: IAppConfig) => {
        this.appConfig = config;
      });
  }
 
  public getAppConfig(): IAppConfig {
    return this.appConfig;
  }
}

Remarquez que l'on revoit une promesse, plutôt qu'un observable, c'est parce que APP_INITIALIZER ne supporte que les promesses.

Ensuite, dans le module de l'application, ajouter dans les providers le service de configuration et la fonction d'initialisation:

  providers: [
    AppConfigService,
    {
      provide: APP_INITIALIZER,
      useFactory: appInitializerFn,
      multi: true,
      deps: [AppConfigService]
    }
  ],
const appInitializerFn = (appConfigService: AppConfigService) => () =>
  appConfigService.loadAppConfig();

Ne pas oublier d'importer HttpClientModule si ce n'est pas déjà fait.

Source: Compile-time vs. Runtime configuration of your Angular App

web/javascript/angular/configuration.txt · Dernière modification : 2022/02/02 00:42 de 127.0.0.1