我们假设我有这个Angular 2服务:
@Injectable()
class Demo {
constructor(private instanceSpecificString: string) {
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,其构造函数接受特定于实例的字符串.我的意思是我想多次实例化这个服务,每次实例化时,我想根据实例化服务的上下文传递一个不同的字符串.
我怎么做?
PS constructor用作示例,但参数可以很容易地是类型string,string或者甚至是某种配置string.
传递给您的服务的值将由实例化它的注入器确定。您也许可以在组件定义之一中执行此操作:
@Component({
...
providers: [
provide(string, {useValue: "someSpecificValue"})
]
})
Run Code Online (Sandbox Code Playgroud)
但是,这存在一个问题,即您正在为字符串标记定义提供程序,这可能会导致可维护性问题。
为您的服务定义一些配置模型可能是一个更好的模式:
class DemoConfig {
instanceSpecificString: string;
}
Run Code Online (Sandbox Code Playgroud)
然后您可以创建一个实例来传递给您的服务。
let config = { instanceSpecificString: "someSpecificValue" }
@Component({
...
providers: [
provide(DemoConfig, {useExisting: config})
]
})
Run Code Online (Sandbox Code Playgroud)
希望这有帮助。我自己还没有尝试过;我在应用程序中使用的服务是单例的。这是我使用的参考:
https://angular.io/docs/ts/latest/api/core/index/provide-function.html
| 归档时间: |
|
| 查看次数: |
12886 次 |
| 最近记录: |