在this page上,Angular文档将AUTO
模块描述为:
Implicit module which gets automatically added to each $injector.
然而,$injector
位于此AUTO
模块中。
AUTO
$injector
AUTO
$injector ...
显然我错过了什么。
AUTO
模块与angular.module()
的关系如何,以及$injector
在哪里?
angular.module()
AUTO
$injector
这是有道理的,但是那些暗示将AUTO
添加到$injector
的文档没有意义。我想知道我是否误解了一些东西。所以我的问题是,我是否误解了什么?
答案 0 :(得分:4)
AUTO基本上用$ provide和$ injector连接模块。 $ injector引用自身,所以$ injector === $ injector.get('$ injector')。它通过在Angular上下文之外构建模块并手动推送$ injector和$ provide来避免鸡/蛋情景。从那时起,模块可以使用$ provide,$ injector等。您将永远不会引用显式名为“AUTO”的模块,但是您通过angular.module创建的任何模块都将具有$ injector和$ provide。其他服务来自'ng'模块,但必须建立它的AUTO部分,因此有一个DI容器可供使用。
答案 1 :(得分:0)
有两个注射器,一个是内部注射器,另一个是外部注射器:
instanceInjector存储系统中实例化服务的列表。它用空对象初始化。 providerInjector维护未实例化的服务列表。
angular.injector
方法可以创建一个实例:
angular.injector().get("$injector")
内置模块ng
也可以:
angular.module("ng")._configBlocks[0][0]
<强>参考强>