当我想注入由我自己编写的服务时,我使用@Inject装饰器:
export class ScheduleComponent {
constructor(@Inject(ConnectionsApi) private connectionsApi: ConnectionsApi ) { }
}但是,如果我使用的是像Http这样的Angular提供的服务,这是不必要的:
export class ConnectionsApi {
constructor(protected http: Http) {}
}为什么这个不一样?
发布于 2016-10-20 09:07:10
当ConnectionsApi是一个类,并且要为该类注册要从其注入值的提供程序时,则不需要@Inject()
对于所有其他情况,您需要@Inject()。
string、number、boolean、Object )注册提供程序,因为它们不够具体。{provide: 'myStringToken': useValue: 123}
...
constructor(@Inject('myStringToken) private someConfig:number) {}{provide: 'myStringToken': useClass: MyConfigurationClass}
...
constructor(@Inject('myStringToken) private someConfig:MyConfigurationInterface) {}{provide: someOpaqueToken : useClass: MyConfigurationClass}
...
constructor(@Inject(someOpaqueToken) private someConfig:MyConfigurationInterface) {}{provide: someOpaqueToken : useClass: MyClassThatImplementsX}
...
constructor(@Inject(someOpaqueToken) private someConfig:X) {}另请参阅
https://stackoverflow.com/questions/40149898
复制相似问题