我有一个基于配置参数的需求,选择一个特定的服务作为组件的注入点。我看到的所有例子都真的使用了特定的服务,并在组件构建时使用它。如何在运行时选择组件的Angular 2服务
有没有办法在运行时执行此注入?
我有一个基于配置参数的需求,选择一个特定的服务作为组件的注入点。我看到的所有例子都真的使用了特定的服务,并在组件构建时使用它。如何在运行时选择组件的Angular 2服务
有没有办法在运行时执行此注入?
您可以使用一个工厂的不同实例,这取决于一些配置
@NgModule({
providers: [
ConfigService,
{ provide: APP_BASE_HREF, useFactory: loadConfig, deps: [ConfigService] },
],
...
又见How to pass parameters rendered from backend to angular2 bootstrap method
function myServiceFactory(config:ConfigService) {
switch(config.someProp) {
case 'someValue': return new ClassA();
default: return new ClassB();
}
}
@Component({
providers: [
{ provide: MyService, useFactory: myServiceFactory, deps: [ConfigService] }
],
...
MyService和ConfigService是在哪里定义的? angularCore的一部分? – reza
不,这只是自定义类的示例名称 –
是返回。 'injector.get()'。 RTM,https://angular.io/docs/ts/latest/guide/dependency-injection.html – estus
感谢您的快速和准确的答复,我想我可以根据配置参数值使用该方案。 – reza