Theo
Theo

Reputation: 1261

Resolving a service programmaticallyin AngularJs

I am trying to resolve a service programmatically in angular js from a particular module, but I can't find the correct way to do that.

I know using angular.injector(['NameOfModule']).get('NameOfService') I can retrieve the service. However, using angular.injector does not retrieve the injector of the given module and instead creates a new injector. This means that when it retrieves the service, as it is a new injector, it does not have the service cached and so creates a new one. This means that I will have several of the same service, and so it will no longer be a singleton, which will obviously cause problems.

What I essentially want to do is retrieve the injector from a particular module so I can try to retrieve the (cached or not cached) service from that injector. Does anyone know how to achieve this?

Upvotes: 0

Views: 543

Answers (1)

Chandermani
Chandermani

Reputation: 42669

What i would suggest would be to inject the $injector service into the controller\service where you want to use it. This would return the injector that the app is using and not create a new injector as angular.injector does. See detailed explanation in this SO post Can't retrieve the injector from angular

Upvotes: 1

Related Questions