diff --git a/src/ngRoute/directive/ngView.js b/src/ngRoute/directive/ngView.js
index cdd1a30e9e0b..30c3397d5160 100644
--- a/src/ngRoute/directive/ngView.js
+++ b/src/ngRoute/directive/ngView.js
@@ -26,6 +26,13 @@ ngRouteModule.directive('ngView', ngViewFillContentFactory);
*
* The enter and leave animation occur concurrently.
*
+ * @knownIssue If `ngView` is contained in an asynchronously loaded template (e.g. in another
+ * directive's templateUrl or in a template loaded using `ngInclude`), then you need to
+ * make sure that `$route` is instantiated in time to capture the initial
+ * `$locationChangeStart` event and load the appropriate view. One way to achieve this
+ * is to have it as a dependency in a `.run` block:
+ * `myModule.run(['$route', function() {}]);`
+ *
* @scope
* @priority 400
* @param {string=} onload Expression to evaluate whenever the view updates.
diff --git a/src/ngRoute/route.js b/src/ngRoute/route.js
index e0a720e39365..f023967a22a8 100644
--- a/src/ngRoute/route.js
+++ b/src/ngRoute/route.js
@@ -17,11 +17,7 @@
*/
/* global -ngRouteModule */
var ngRouteModule = angular.module('ngRoute', ['ng']).
- provider('$route', $RouteProvider).
- // Ensure `$route` will be instantiated in time to capture the initial
- // `$locationChangeSuccess` event. This is necessary in case `ngView` is
- // included in an asynchronously loaded template.
- run(['$route', angular.noop]),
+ provider('$route', $RouteProvider),
$routeMinErr = angular.$$minErr('ngRoute');
/**
diff --git a/test/ngRoute/directive/ngViewSpec.js b/test/ngRoute/directive/ngViewSpec.js
index c7e9652a13f7..daab5f26c987 100644
--- a/test/ngRoute/directive/ngViewSpec.js
+++ b/test/ngRoute/directive/ngViewSpec.js
@@ -1027,34 +1027,3 @@ describe('ngView animations', function() {
));
});
});
-
-describe('ngView in async template', function() {
- beforeEach(module('ngRoute'));
- beforeEach(module(function($compileProvider, $provide, $routeProvider) {
- $compileProvider.directive('asyncView', function() {
- return {templateUrl: 'async-view.html'};
- });
-
- $provide.decorator('$templateRequest', function($timeout) {
- return function() {
- return $timeout(angular.identity, 500, false, '');
- };
- });
-
- $routeProvider.when('/', {template: 'Hello, world !'});
- }));
-
-
- it('should work correctly upon initial page load',
- // Injecting `$location` here is necessary, so that it gets instantiated early
- inject(function($compile, $location, $rootScope, $timeout) {
- var elem = $compile('')($rootScope);
- $rootScope.$digest();
- $timeout.flush(500);
-
- expect(elem.text()).toBe('Hello, world !');
-
- dealoc(elem);
- })
- );
-});
diff --git a/test/ngRoute/routeSpec.js b/test/ngRoute/routeSpec.js
index dc247a4788ea..b6527438af28 100644
--- a/test/ngRoute/routeSpec.js
+++ b/test/ngRoute/routeSpec.js
@@ -23,21 +23,6 @@ describe('$route', function() {
dealoc(element);
});
- it('should be loaded upon initial load (even if `ngView` is loaded async)', function() {
- module(function($routeProvider) {
- $routeProvider.when('/', {template: 'Hello, world !'});
- });
-
- inject(function($location, $rootScope) {
- $location.path('/');
- $rootScope.$digest();
- });
-
- inject(function($route) {
- expect($route.current).toBeDefined();
- });
- });
-
it('should allow cancellation via $locationChangeStart via $routeChangeStart', function() {
module(function($routeProvider) {
$routeProvider.when('/Edit', {