我正在阅读角度 2 修订版 47 第 250 页的ng-book
,有以下段落:
当我们像这样将类本身放入提供程序列表中时:
providers: [ MyService ]
这告诉 Angular,我们希望在 MyService 存在时提供 MyService 的单例实例。 注入。由于此模式非常常见,因此该类本身是 以下等效配置的速记表示法:
providers: [ { provide: MyComponent, useClass: MyComponent } ]
是错别字吗,意思应该是:
providers: [
{ provide: MyService, useClass: MyService }
]
这是错别字,因为你不能将组件用作提供者,这里是官方文档
提供程序类并提供对象文本 我们编写了提供程序 像这样的数组:
providers: [Logger]
这实际上是一个速记表达式 对于使用具有两个的提供程序对象文本的提供程序注册 性能:
[{ provide: Logger, useClass: Logger }]
第一个是令牌 用作查找依赖项值和注册的键 提供程序。
第二个是提供程序定义对象,我们可以将其视为 创建依赖项值的方法。有很多方法可以 创建依赖关系值...以及编写食谱的多种方法
是的,是一样的。当传递给provide
并且useClass
的类型相同时,则相当于只传递type
。
只是一个提示。提供一个组件(MyComponent
)通常没有意义。
是的,它们都是一样的。当你编写提供者时:[MyService] angular 会将其扩展为 [{ provide: MyService, useClass: MyService}],其中第一个参数提供:MyService 将用作依赖项注入令牌,该令牌将用作查找"MyService"的键第二个参数 useClass: MyService 它将从现有服务类 MyService