neptune
neptune

Reputation: 1261

Dynamic dependency injection in Angular ui-router resolve

Is there any way to make dependency injection inside ui-router resolve function?

I trying to achieve something like this:

resolve : {
    anArray : function(/* no dependencies yet */) {
        var currency = 'eur';

        //here I'd like to make a dependency injection
        var currencyDetail = /*injected dependency*/.get();
        return currencyDetail;
    }
}

In the original project I have a large array at currency and a long list of services like eurdata, usddata etc, many of them not always used in resolving anArray.

Tried $injector.get(currency + 'data') but not worked.

Upvotes: 0

Views: 438

Answers (2)

Pankaj Parkar
Pankaj Parkar

Reputation: 136144

You can have $injector inject inside resolve function and ask for dependency to it

resolve : {
    anArray : ['$injector', function($injector) {
        var currency = 'eur';

        //here I'd like to make a dependency injection
        var currencyDetail = $injector.get(dependencyName);
        return currencyDetail;
    }]
}

Upvotes: 2

JanS
JanS

Reputation: 2075

You can use the usual array-notation:

resolve: {
  anArray: ['dependency', function(dependency) {
    var currency = 'eur';

     //here I'd like to make a dependency injection
     dependency.doSomething();

    var currencyDetail = /*injected dependency*/.get();
    return currencyDetail;
  }]
}

Upvotes: 2

Related Questions