我有一个要求,基于配置参数,选择特定服务作为组件的注入。我看到的所有示例都真正使用特定服务并在组件构建时使用它。
有没有办法在运行时执行此注入?
答案 0 :(得分:1)
您可以使用根据某些配置返回不同实例的工厂
@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] }
],
...