首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时使用@注入角2?

何时使用@注入角2?
EN

Stack Overflow用户
提问于 2016-10-20 09:00:48
回答 1查看 629关注 0票数 2

当我想注入由我自己编写的服务时,我使用@Inject装饰器:

代码语言:javascript
复制
export class ScheduleComponent {

    constructor(@Inject(ConnectionsApi) private connectionsApi: ConnectionsApi ) { }
}

但是,如果我使用的是像Http这样的Angular提供的服务,这是不必要的:

代码语言:javascript
复制
export class ConnectionsApi {

    constructor(protected http: Http) {}
}

为什么这个不一样?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-20 09:07:10

ConnectionsApi是一个类,并且要为该类注册要从其注入值的提供程序时,则不需要@Inject()

对于所有其他情况,您需要@Inject()

  • 您不能为原语类型(如stringnumberbooleanObject )注册提供程序,因为它们不够具体。
  • 无法为接口类型注册提供程序,因为它们在运行时不可用。
代码语言:javascript
复制
{provide: 'myStringToken': useValue: 123}
...
constructor(@Inject('myStringToken) private someConfig:number) {}
代码语言:javascript
复制
{provide: 'myStringToken': useClass: MyConfigurationClass}
...
constructor(@Inject('myStringToken) private someConfig:MyConfigurationInterface) {}
代码语言:javascript
复制
{provide: someOpaqueToken : useClass: MyConfigurationClass}
...
constructor(@Inject(someOpaqueToken) private someConfig:MyConfigurationInterface) {}
代码语言:javascript
复制
{provide: someOpaqueToken : useClass: MyClassThatImplementsX}
...
constructor(@Inject(someOpaqueToken) private someConfig:X) {}

另请参阅

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40149898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档