在模块Vs组件/指令中注册提供程序

Jyo*_*Pal 1 angular2-directives angular

我们可以在角度模块或组件/自定义指令中注册提供者吗?

为什么angular团队允许在模块或组件/自定义指令中注册提供者?有人可以帮助实用的例子有利有弊吗?

Max*_*kyi 7

为什么angular团队允许在模块或组件/自定义指令中注册提供者?

那是因为他们有不同的范围.在非延迟加载的模块级别注册的提供程序将可用于整个应用程序中的任何组件.在组件级别注册的提供程序仅适用于组件及其子组件.

在AngularJS工作了几年之后,只有一个应用级别范围,我看到当前的Angular scoped注入器实现是向前迈出的一大步.为了更好地理解这些好处,假设您正在使用小部件开发仪表板.用户界面如下所示:

在此输入图像描述

因此,您希望有一个特殊的类负责每个窗口小部件管理.并且您希望窗口小部件中的所有组件都获取特定于其窗口小部件的服务实例.在AngularJS中,这很难实现,因为如果我们在应用程序级别注册此服务,则只会创建一个实例.但在Angular中,这个问题很容易解决.我们在WidgetComponent中注册该服务,然后该组件的子项将注入它们自己的服务实例.