在全球范围内强制 ng-strict-di 而不仅仅是在 ng-app 级别

Force ng-strict-di globally not just on an ng-app level

我正在尝试添加 ng-strict-di(以便在 DI 未正确完成 controller/directive/etc 时帮助抛出错误)。

我有一个 globalApp module 包含杂项辅助指令/httpInterceptors 等。是否可以以某种方式将其添加到那里?

我找到了这个解决方案,但是这个模块从未被引导到页面,它只是被注入到页面上的子模块中

angular.bootstrap(document, ['globalApp'], {
   strictDi: true
});

但这只是中断,因为该页面已经使用 angular.

在每个特定页面上使用 ng-app="app" 进行引导

还有什么办法可以做到这一点?

当您将 ng-strict-di 添加到应用程序时,它会强制对应用程序的所有(已使用)依赖项进行显式注释。

所以,如果你有:

<body ng-app="app">
  <foo></foo>
</body>

foo 在另一个模块中定义并且没有显式注释:

anotherModule.directive("foo", function(){
  return {
    template: "{{foo}}",
    controller: function($scope){
      $scope.foo = "foo"; // $scope is not explicitly annotated
    }
  };
});

那么这会引发错误。

换句话说,您不需要为每个模块添加 ng-strict-di - 只需在使用该模块中的服务、控制器、指令等的应用程序上添加。