`providers:[MyService]`与`providers:[{provide:MyComponent,useClass:MyComponent}]相同`

时间:2017-01-12 14:21:30

标签: angular angular2-injection

我正在阅读角度2修订版47第250页上的ng-book,并且有以下段落:

  

当我们将类本身放入这样的提供者列表中时:

providers: [ MyService ] 
     

这告诉Angular我们想要在MyService时提供MyService的单例实例   注射。因为这种模式很常见,所以这个类本身就是   下面的简写表示法,等效配置:

providers: [
    { provide: MyComponent, useClass: MyComponent }
]

这是一个错字,应该是什么意思:

providers: [
    { provide: MyService, useClass: MyService }
]

3 个答案:

答案 0 :(得分:2)

是的,它是一样的。 如果传递给provideuseClass的类型相同,则相当于只传递type

只是一个提示。提供组件(MyComponent)通常没有意义。

答案 1 :(得分:2)

这是错字,因为你不能将组件用作提供者,这里是official docs

  

Provider类并提供对象文字我们编写了提供程序   像这样的数组:

providers: [Logger]
     

这实际上是一个简写表达   使用提供者对象文字与两个提供者注册   属性:

[{ provide: Logger, useClass: Logger }]
     

第一个是令牌   作为定位依赖值和注册的关键   提供者。

     

第二个是提供者定义对象,我们可以将其视为一个   用于创建依赖关系值的配方。有很多方法可以   创建依赖值...以及编写配方的许多方法

答案 2 :(得分:0)

是的,两者都是一样的。 当您编写 providers: [MyService] angular 时,会将其扩展为 [{ provide: MyService, useClass: MyService}] 其中第一个参数 provide: MyService 将 作为依赖注入令牌工作,它将作为定位“MyService”的关键 和第二个参数 useClass: MyService 它将从 现有服务类 MyService