【发布时间】:2018-02-23 15:48:27
【问题描述】:
创建一个“顶级组件”,作为所有模块的根 成分。将自定义 HttpBackend 提供程序添加到顶部组件的 提供者列表而不是模块的提供者。回想一下 Angular 为每个组件实例创建一个子注入器并填充 带有组件自己的提供程序的注入器。
当该组件的子组件请求 HttpBackend 服务时, Angular 提供本地 HttpBackend 服务,而不是版本 在应用程序根注入器中提供。子组件使 无论其他模块对 HttpBackend 做什么,正确的 http 请求。
确保将模块组件创建为该模块顶部的子级 组件。
如果我们打开Hierarchical Dependency Injectors 文档的源文件,我们可以看到ACarComponent、BCarComponent 和CCarComponent 创建了CarService、CarService2 和CarService3 的三个不同实例。
但是,如果我还在模块级别提供了CarService,我如何从父 DI 获取子组件 BCarComponent 的 CarService?
【问题讨论】:
-
但是我怎样才能从子组件中获取父 DI - 你是什么意思?你的用例是什么?你在组件或模块上定义提供者吗?
-
-
您要跳过所有中间组件注入器吗?为什么不按照 Suren 的建议在模块级别定义提供程序?
-
@AngularInDepth.com,我学习文档(参见上面的链接),我想知道如何从“顶级组件”而不是模块级别获取单例。
-
你不能用可用的公共 API 做到这一点
标签: angular dependency-injection hierarchy web-component