diff --git a/src/modal/modal.js b/src/modal/modal.js index 11527341ee..03d0e68b37 100644 --- a/src/modal/modal.js +++ b/src/modal/modal.js @@ -538,6 +538,8 @@ angular.module('ui.bootstrap.modal', []) angular.forEach(resolves, function (value) { if (angular.isFunction(value) || angular.isArray(value)) { promisesArr.push($q.when($injector.invoke(value))); + } else if (angular.isString(value)) { + promisesArr.push($q.when($injector.get(value))); } }); return promisesArr; diff --git a/src/modal/test/modal.spec.js b/src/modal/test/modal.spec.js index 8f68396db7..eabd52024b 100644 --- a/src/modal/test/modal.spec.js +++ b/src/modal/test/modal.spec.js @@ -547,6 +547,21 @@ describe('$modal', function () { expect($document).toHaveModalOpenWithContent('Content from resolve', 'div'); }); + it('should resolve string references to injectables', function () { + open({ + controller: function($scope, $foo) { + $scope.value = 'Content from resolve'; + expect($foo).toBe($modal); + }, + resolve: { + $foo: '$modal' + }, + template: '
{{value}}
' + }); + + expect($document).toHaveModalOpenWithContent('Content from resolve', 'div'); + }); + it('should delay showing modal if one of the resolves is a promise', function () { open(modalDefinition('
{{value}}
', {