etlds
etlds

Reputation: 5890

angular 4 ngModule inject provider/services conditionally

In my app.module.ts

@NgModule({
...
providers: [MyService,
          // providers used to create fake backend
          fakeBackendProvider,
          MockBackend,
          BaseRequestOptions
         ],
bootstrap: [AppComponent]
})

fakeBackendProvider, MockBackend and BaseRequestOptions are for the mock up back end. Is there way to inject these services by a variable in environment.ts file?

Upvotes: 0

Views: 2795

Answers (1)

alexKhymenko
alexKhymenko

Reputation: 5598

You can use it like this. Created Plunker

//route to environment file
import { environment } from '../../environments/environment';
providers: [MyService,
          // providers used to create fake backend
     {
      provide: SomeSerivce,
      useFactory: authHeadersFactory
    },       
   ],


export function authHeadersFactory() {
  if (environment.prod) {
    return new Mock();
  }
  return new fakeBackend();
}

Upvotes: 1

Related Questions