Angular 笔记04 依赖注入
ElementInjector (注入器层次结构)
在每个 DOM 元素上隐式创建。
除非你在 @Directive()
或 @Component()
的 providers
属性中进行配置,
否则默认情况下,ElementInjector 为空。
Angular 会为每个 DOM 元素隐式创建 ElementInjector。
@Component({
...
providers: [{ provide: ItemService, useValue: { name: 'lamp' } }]
})
export class TestComponent
在组件中提供服务时,可以通过 ElementInjector 在该组件实例处使用该服务。
根据解析规则部分描述的可见性规则,它也同样在子组件/指令处可见。
当组件实例被销毁时,该服务实例也将被销毁。
组件是一种特殊类型的指令,这意味着 @Directive() 具有 providers 属性,@Component() 也同样如此。
同一元素上的组件和指令共享同一个注入器。