Передайте конфигурацию из конфигурации, предоставленной модулю с forRoot - PullRequest
0 голосов
/ 10 июля 2019

У меня есть модуль авторизации, который ожидает конфигурацию, подобную

module.ts дочернего модуля

    export class AAModule {
    static forRoot(config: IConfig): ModuleWithProviders {
    console.log(config);
    return {
      ngModule: AAModule,
      providers: [AAService, { provide: 'config', useValue: config }]
    };
  }
}

Приложение, использующее этот модуль, имеет собственную конфигурацию, настроенную таким образом

Конфигурация родительского модуля

 import { InjectionToken } from '@angular/core';

    export interface IConfig {
  ...
  aa?: {
    enabled?: boolean,
    authentictionUrl?: string,
    autherizationUrl?: string,
    apiKey?: string,
  },
   ...
};

const LOCAL: IConfig = {
 ...

};

const PROD: IConfig = {
  ...
};

export const CONFIG_TOKEN = new InjectionToken<IConfig>('config.token');
export const CONFIG_PROVIDER = {
  provide: CONFIG_TOKEN,
  useValue: LOCAL
}

в dev я установил useValue: LOCAL и в prod useValue:PROD и так далее

module.ts родительского модуля

import { CONFIG_PROVIDER } from './config';
....
imports: [

    AAModule.forRoot(works for a static object i'd need object from the main config files)
  ],
  providers: [
    CONFIG_PROVIDER,
  ]
...

Тогда я могу использовать конфигурацию в любом месте моего родительского приложения, например,

constructor @Inject(CONFIG_TOKEN) config: IConfig
  ) { this.config = config; }

Чего я не понимаю, так это как передать секцию config.aa основной конфигурации в функцию forRoot дочернего модуля (авторизации).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...