Angular 2按字符串名称

时间:2017-01-04 18:49:15

标签: angular angular2-di angular2-injection

是否有办法通过服务名称获取角度为2的可注入服务的实例?

例如,在Angular 1中你可以写:

var service = $injector.get('ServiceName');

并且service变量将获得服务的实例。

我真的很感谢你的帮助!

2 个答案:

答案 0 :(得分:9)

如果按名称提供,可以按名称注入

@NgModule({
  providers: [
      ServiceName, 
      {provide: 'ServiceName', useExisting: ServiceName}
  ],
  ...

答案 1 :(得分:1)

您可以使用Explicit injector creation

使用Injector Class
injector = ReflectiveInjector.resolveAndCreate([ServiceClass, Dependency1Class, Dependency2Class]);

let service= injector.get(ServiceClass); //pass the type not the name