Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @NgModule({
- imports: [
- CommonModule
- ],
- declarations: [],
- exports: []
- })
- export class ScnApiModule {
- static forRoot(config?: IApiConfig): ModuleWithProviders {
- console.log('ScnApiModule', config); // here I get the config
- return {
- ngModule: ScnApiModule,
- providers: [
- {provide: 'ApiConfig', useValue: config},
- RestService,
- ...
- @Injectable()
- export class RestService {
- constructor(@Inject('ApiConfig') config?: IApiConfig) {
- console.log('RestService', config); // here I get `undefined`
- ...
- export const CONFIG: IApiConfig = {
- apiHost: environment.scnApiLibrary.apiHost,
- authHost: environment.scnApiLibrary.authHost,
- clientId: environment.scnApiLibrary.clientId,
- secret: environment.scnApiLibrary.secret,
- };
- @NgModule({
- ...
- imports: [
- ScnApiModule.forRoot(CONFIG)
- ]
- ...
- @Injectable()
- export class IApiConfig {
- apiHost:string;
- authHost:string;
- clientId:string;
- secret:string;
- constructor(init?: Partial<IApiConfig>) {
- this.apiHost = init.apiHost;
- ...
- }
- }
- export const apiConfigToken = new InjectionToken<IApiConfig>('apiConfigToken');
- export function getapiConfigInjectionToken(config: IApiConfig) {
- return new IApiConfig(config);
- }
- export const APIConfigProvider = {
- provide: IApiConfig ,
- useFactory: getapiConfigInjectionToken,
- deps: [apiConfigToken]
- };
- export class ScnApiModule {
- static forRoot(config?: IApiConfig): ModuleWithProviders {
- return {
- ngModule: ScnApiModule,
- providers: [
- {provide: apiConfigToken, useValue: config},
- APIConfigProvider,
- ...
- ScnApiModule.forRoot({apiHost: 123,authHost:456})
Add Comment
Please, Sign In to add comment