如何将特定于组件的值注入到服务中?

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()
  }
}