import { ModuleWithProviders, NgModule, InjectionToken } from '@angular/core'; import { BomConfig } from './bom-config.interface'; import { ConfigService, MODULE_CONFIG } from './config.service'; @NgModule({ providers: [ConfigService] }) export class ConfigModule { static forRoot(config: BomConfig): ModuleWithProviders { return { ngModule: ConfigModule, providers: [{ provide: MODULE_CONFIG, useValue: config }, ConfigService] }; } } // @NgModule() // export class ConfigModule { // static forRoot(config?: any): ModuleWithProviders { // return { // ngModule: ConfigModule, // providers: [ // { // provide: FOR_ROOT_CONFIG_TOKEN, // useValue: config // }, // { // provide: BomConfig, // useFactory: provideBomConfig, // deps: [ FOR_ROOT_CONFIG_TOKEN ] // } // ] // }; // } // } // export var FOR_ROOT_CONFIG_TOKEN = new InjectionToken( "forRoot() ConfigService" ); // export function provideBomConfig( config?: any ) : BomConfig { // var bomConfigOptions = new BomConfig(); // // if(!config){ // // config = environment.bomConfig; // // } // if(config){ // bomConfigOptions.apis = config.apis; // bomConfigOptions.clientId = config.clientId; // bomConfigOptions.target = config.target; // } // return ( bomConfigOptions ); // } // export interface ConfigModuleOptions { // target: string, // clientId?: string, // apis: { // security?: { // protocol: string, // domain: string, // subdomain: string, // path: string // }, // cart?: { // domain: string, // subdomain: string, // path: string, // protocol?: string // }, // hybris?: { // domain: string, // subdomain: string, // path: string // }, // user?: { // protocol: string, // domain: string, // subdomain: string, // path: string // } // bom: { // domain: string, // subdomain: string, // path: string // }, // myprojects?: { // protocol: string, // domain: string, // subdomain?: string, // path: string // } // } // }