将特定于组件的值注入Angular2服务

时间:2017-01-12 14:54:46

标签: angular dependency-injection angular2-services

我很清楚如何将服务注入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指令时注入属性。但是如何在组件级别实现这一目标呢?

1 个答案:

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