DI 依赖注入
自己的一些demo
官网DI的例子…该构造函数类型、 @Component 装饰器、父级的 providers 信息这三个合起来,一起告诉 Angular 的注入器,
在任何时候新建一个新的 HeroListComponent 的时候,注入一个 HeroService 的实例。
injector = ReflectiveInjector.resolveAndCreate([Car, Engine, Tires]);
let car = injector.get(Car);
但无论在《英雄指南》还是其它范例中,我们都没有发现这样的代码。
在必要时,我们 可以 写 使用显式注入器的代码 ,但却很少这样做。
我们建议为每个服务类都添加 @Injectable() ,包括那些没有依赖所以技术上不需要它的。因为:
- 面向未来 : 没有必要记得在后来添加了一个依赖的时候添加 @Injectable() 。
- 一致性 : 所有的服务都遵循同样的规则,并且我们不需要考虑为什么少一个装饰器。
- 总是使用 @Injectable() 的形式,不能只用 @Injectable 。 如果忘了括号,我们的应用就会神不知鬼不觉的失败!
- 在一个注入器的范围内,依赖都是单例的。