Angular 笔记04 依赖注入

Angular 官网教程

ElementInjector (注入器层次结构)

在每个 DOM 元素上隐式创建。
除非你在 @Directive()@Component()providers 属性中进行配置,
否则默认情况下,ElementInjector 为空。

Angular 会为每个 DOM 元素隐式创建 ElementInjector。

 @Component({
  ...
  providers: [{ provide: ItemService, useValue: { name: 'lamp' } }]
})
export class TestComponent

在组件中提供服务时,可以通过 ElementInjector 在该组件实例处使用该服务。
根据解析规则部分描述的可见性规则,它也同样在子组件/指令处可见。
当组件实例被销毁时,该服务实例也将被销毁。

组件是一种特殊类型的指令,这意味着 @Directive() 具有 providers 属性,@Component() 也同样如此。
同一元素上的组件和指令共享同一个注入器。