父模块指令可以在子模块(如控制器)中使用吗?

Can parent module directives be used in child modules like controllers?

正如 controllers 是模块 "level" 独立的并且可以在整个应用程序堆栈的任何地方使用我想知道是否有一种方法可以让子模块使用父模块指令而不必将它们分配为每个子模块的依赖项。

我希望指令如何工作的示例(在 controller 看来):

angular.module('app.child').config(function($stateProvider) {
  $stateProvider.state('child', {
    url: '/child',
    views: {
      'header': {
        controller: 'parentController',
        templateUrl: 'child.html'
      }
    }
  });
});

angular.module('app').controller('parentController', function () {
  console.log('test');
});

所以我想知道如果

angular.module('app', ['app.child']);
angular.module('app.child', ['ui.router']);

也可以写成

angular.module('app', ['app.child', 'ui.router']);
angular.module('app.child', []);

在某种程度上 ui.router 仍然可用于子模块。

如果我在现有项目中这样做,我会收到 $injector 个错误。

Just as controllers are module "level" independent and can be used anywhere

这是真的,那是你永远不应该做的事情。 模块应该是 self-consistent 并且独立于 parent 模块 - 它应该声明所有必需的依赖项。

即如果你有 2 个模块:app 和 app.child,并且在 app.child 的某个地方你有:<div ui-sref=... 而你的 app.child 必须依赖于 ui-router。 (如果不行,这仍然有效,但是 parent 可以 - 但这并不意味着这是正确的方法)

N.B。许多应用程序可以留在单个模块中。你确定你需要不止一个吗?