Angular 2 通过字符串名称获取服务

Angular 2 get service by string name

有没有办法仅通过服务名称获取 angular 2 的可注入服务实例?

例如,在 Angular 1 你可以写:

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

service 变量将获得服务的一个实例。

非常感谢你们的帮助!

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

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

您可以使用Explicit injector creation using the Injector Class

injector = ReflectiveInjector.resolveAndCreate([ServiceClass, Dependency1Class, Dependency2Class]);

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