通过字符串注入和解析 angular2 提供程序

Injecting and resolving angular2 providers by string

我正在尝试将基于 运行 时间数据的提供程序注入到我的 angular2 组件中。

到目前为止我有这个:

  let type: PropertyDescriptor = Object.getOwnPropertyDescriptor(providers, provider.name);
  if (!type) return;

  let injector: Injector = ReflectiveInjector.resolveAndCreate([(<any>type).get()]);
  let resolvedProvider: IAnalyticRepository = injector.get((<any>type).get());

这会尝试创建提供者,但由于它的子依赖性,它会引发错误。

我收到的错误是:

Error: No provider for HttpHandler! (GoogleRepository -> HttpHandler)

我将如何继续将子提供程序也注入已解析的提供程序?

我想你想要的是构建一个在解析时还包括 Angular2 提供程序的注入器

constructor(private injector:Injector) {}

...

someMethod() {    
  let resolvedProviders = ReflectiveInjector.resolve([Car, Engine]);
  let child = ReflectiveInjector.fromResolvedProviders(
      resolvedProviders, 
      this.injector
  );
}

另见