2017-02-28 55 views
1

我有一个基于配置参数的需求,选择一个特定的服务作为组件的注入点。我看到的所有例子都真的使用了特定的服务,并在组件构建时使用它。如何在运行时选择组件的Angular 2服务

有没有办法在运行时执行此注入?

+1

是返回。 'injector.get()'。 RTM,https://angular.io/docs/ts/latest/guide/dependency-injection.html – estus

+0

感谢您的快速和准确的答复,我想我可以根据配置参数值使用该方案。 – reza

回答

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] } 
    ], 
    ... 
+0

MyService和ConfigService是在哪里定义的? angularCore的一部分? – reza

+0

不,这只是自定义类的示例名称 –

相关问题