我有一个授权模块,需要这样的配置
子模块的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; }
功能。