Guest User

Untitled

a guest
Oct 18th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. @NgModule({
  2. imports: [
  3. CommonModule
  4. ],
  5. declarations: [],
  6. exports: []
  7. })
  8. export class ScnApiModule {
  9. static forRoot(config?: IApiConfig): ModuleWithProviders {
  10. console.log('ScnApiModule', config); // here I get the config
  11.  
  12. return {
  13. ngModule: ScnApiModule,
  14. providers: [
  15. {provide: 'ApiConfig', useValue: config},
  16. RestService,
  17. ...
  18.  
  19. @Injectable()
  20. export class RestService {
  21. constructor(@Inject('ApiConfig') config?: IApiConfig) {
  22. console.log('RestService', config); // here I get `undefined`
  23. ...
  24.  
  25. export const CONFIG: IApiConfig = {
  26. apiHost: environment.scnApiLibrary.apiHost,
  27. authHost: environment.scnApiLibrary.authHost,
  28. clientId: environment.scnApiLibrary.clientId,
  29. secret: environment.scnApiLibrary.secret,
  30. };
  31.  
  32. @NgModule({
  33. ...
  34. imports: [
  35. ScnApiModule.forRoot(CONFIG)
  36. ]
  37. ...
  38.  
  39. @Injectable()
  40. export class IApiConfig {
  41. apiHost:string;
  42. authHost:string;
  43. clientId:string;
  44. secret:string;
  45.  
  46. constructor(init?: Partial<IApiConfig>) {
  47. this.apiHost = init.apiHost;
  48. ...
  49. }
  50. }
  51.  
  52. export const apiConfigToken = new InjectionToken<IApiConfig>('apiConfigToken');
  53.  
  54. export function getapiConfigInjectionToken(config: IApiConfig) {
  55. return new IApiConfig(config);
  56. }
  57.  
  58. export const APIConfigProvider = {
  59. provide: IApiConfig ,
  60. useFactory: getapiConfigInjectionToken,
  61. deps: [apiConfigToken]
  62. };
  63.  
  64. export class ScnApiModule {
  65. static forRoot(config?: IApiConfig): ModuleWithProviders {
  66.  
  67. return {
  68. ngModule: ScnApiModule,
  69. providers: [
  70. {provide: apiConfigToken, useValue: config},
  71. APIConfigProvider,
  72. ...
  73.  
  74. ScnApiModule.forRoot({apiHost: 123,authHost:456})
Add Comment
Please, Sign In to add comment