Ron Avraham
Ron Avraham

Reputation: 478

Angular 2 get service by string name

Is there a way get an instance of an injectable service of angular 2 just by the service name?

For Example, in Angular 1 you could write:

var service = $injector.get('ServiceName');

and the service variable would get an instance of the service.

I'd really appreciate your help guys!

Upvotes: 8

Views: 5560

Answers (2)

Fals
Fals

Reputation: 6839

You can use Explicit injector creation using the Injector Class

injector = ReflectiveInjector.resolveAndCreate([ServiceClass, Dependency1Class, Dependency2Class]);

let service= injector.get(ServiceClass); //pass the type not the name

Upvotes: 1

Günter Zöchbauer
Günter Zöchbauer

Reputation: 658047

If you provide it by name, you can inject it by name

@NgModule({
  providers: [
      ServiceName, 
      {provide: 'ServiceName', useExisting: ServiceName}
  ],
  ...

Upvotes: 12

Related Questions