我很清楚如何将服务注入angular2。我们可以在模块级别或组件级别提供服务。
我希望在该服务依次注入我的组件之前将特定属性注入服务。有问题的财产取决于我的组件。如何在Angular 2中实现这一目标?
示例:
@Injectable()
export class MyService {
constructor(myProperty: String) {
setSomethingUsingMyProperty(myProperty)
}
}
@Component(..., {providers: [MyService] })
export class MyComponent {
constructor(myService: MyService) {
myService.doSomething()
}
}
如果我在上层模块中提供属性,那么我假设Angular2可以在我包含@Inject指令时注入属性。但是如何在组件级别实现这一目标呢?
答案 0 :(得分:4)
您可以通过字符串名称提供和注入,如
@Injectable()
export class MyService {
constructor(@Inject('someName') myProperty: String) {
setSomethingUsingMyProperty(myProperty)
}
}
@Component({...,
providers: [MyService, {provide: 'someName', useValue: 'someValue'}] })
export class MyComponent {
constructor(myService: MyService) {
myService.doSomething()
}
}