8.3 Injector 注入器 - RLwu/angular-start GitHub Wiki

Injector - 注入器

在大多数情况下,我们只要在类的构造函数参数列表中使用Inject注解,就 可以告诉Angular2框架向我们的类代码中注入正确的对象。

那么,它是如何做到的?

Angular2的依赖注入机制实现的核心是一个作为第三方的注入器/Injector。 通常使用Injector类的静态方法resolveAndCreate()来实例化一个注入器, 在实例化时需要指定所有的依赖项:

class A{...}
class B{...}
class C{...}
var injector = Injector.resolveAndCreate([A,B,C]);

一旦获得了注入器实例,就可以使用其get()方法来获得指定的对象:

var a = injector.get(A); //A的实例
var b = injector.get(B); //B的实例

值得指出的是,对于一个注入器而言,其仅仅维护每个依赖项的单一实例,也就是 说,无论你调用injector.get(A)多少遍,它总是返回A的同一个实例对象。

每当Angular2框架引导启动一个组件时,会自动根据组件Component注解的providers 属性创建注入器,然后根据组件类的Inject注解,调用注入器的get()获取对应的 实例注入到组件类的构造函数中:

injector