将提供的配置中的config传递给具有forRoot的模块

时间:2019-07-09 22:39:00

标签: angular typescript angular7

我有一个授权模块,需要这样的配置

子模块的

module.ts

bool MyClassName::RestartServer(const CStringA& serviceName)
{
    ...
    SC_HANDLE SHandle = OpenService(hSCManager, CString(serviceName), SC_MANAGER_ALL_ACCESS);
    ...
}

正在使用此模块的应用程序具有其自身的配置,

父模块的配置

bool MyClassName::RestartServer(const CStringA& serviceName)
{
    ...
    SC_HANDLE SHandle = OpenService(hSCManager,
        #ifdef UNICODE
        CStringW(serviceName)
        #else
        serviceName
        #endif
        , SC_MANAGER_ALL_ACCESS);
    ...
}

在开发人员中设置 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 } 中设置

父模块的

module.ts

useValue: LOCAL

然后我可以像这样在父应用程序中的任何地方使用配置

useValue:PROD

我不了解的是如何将主配置的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; } 功能。

0 个答案:

没有答案