如何将特定于组件的值注入到服务中?
How to inject component-specific values into a service?
我很清楚如何注入服务。我们可以在模块级别或组件级别提供服务。
我希望先将特定的 属性 注入该服务,然后再将该服务注入到我的组件中。有问题的 属性 取决于我的组件。
如何在 Angular 2 中实现?
示例:
@Injectable()
export class MyService {
constructor(myProperty: string) {
setSomethingUsingMyProperty(myProperty)
}
}
@Component(..., {providers: [MyService] })
export class MyComponent {
constructor(myService: MyService) {
myService.doSomething()
}
}
如果我在覆盖模块中提供 属性,我认为如果包含 @Inject
指令,Angular 可以注入 属性。但是如何在组件级别实现呢?
您可以通过字符串名称提供和注入,例如
@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()
}
}
我很清楚如何注入服务。我们可以在模块级别或组件级别提供服务。
我希望先将特定的 属性 注入该服务,然后再将该服务注入到我的组件中。有问题的 属性 取决于我的组件。
如何在 Angular 2 中实现?
示例:
@Injectable()
export class MyService {
constructor(myProperty: string) {
setSomethingUsingMyProperty(myProperty)
}
}
@Component(..., {providers: [MyService] })
export class MyComponent {
constructor(myService: MyService) {
myService.doSomething()
}
}
如果我在覆盖模块中提供 属性,我认为如果包含 @Inject
指令,Angular 可以注入 属性。但是如何在组件级别实现呢?
您可以通过字符串名称提供和注入,例如
@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()
}
}