У меня есть модуль авторизации, который ожидает конфигурацию, подобную
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
дочернего модуля (авторизации).