2016-12-21 6 views
1

実行時データに基づくプロバイダを私のangular2コンポーネントに注入しようとしています。angle2プロバイダを文字列で挿入して解決する

これまでのところ、私はこれがあります。

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)

は、どのように私は同様に解決プロバイダに子プロバイダーを注入については上に行くのでしょうか?私はあなたが何をしたいと思い

+0

を参照してください?これは「文字列によるプロバイダ」とどのように関連していますか? –

+0

私は動的に注射していると言っています。私はエラーを追加するために編集します。 – misha130

答えて

1

constructor(private injector:Injector) {} 

... 

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

を解決するときにもAngular2プロバイダが含まれ、インジェクタを構築することですまたInject service with ReflectiveInjector without specifying all classes in the dependency treeどのようなエラー

+0

親が問題だった、ありがとう。 – misha130