Search code examples
javascriptangularjsroutesangular-ui-routerangularjs-routing

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.


Solution

  • 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;
        }]
    }