2016-08-26 16 views
4

私は、各ステップの後に、サーバーが次のフォームのHTML文字列を返して完了する、複数ステップユーザーサインアップを作成しています。各ステップで、私はCompileServiceを使って動的に作成したフォームコンポーネントのテンプレートとしてそのHTMLを設定します。これは正常に動作し、フォームがよさそうだが、私はその動的に作成したフォームにすべてのサービスを追加することはできません、私はここに私のCompileServiceは、私が望む角型2は動的コンポーネントにサービスを埋め込みます

import { Component, ComponentMetadata, ComponentResolver, Injectable, ReflectiveInjector, ViewContainerRef } from '@angular/core'; 

@Injectable() 
export class CompileService { 
constructor(private resolver: ComponentResolver) {} 

createComponent(metadata: ComponentMetadata, vcRef: ViewContainerRef) { 
     let cmpClass = class DynamicComponent {}; 

     let decoratedCmp = Component(metadata)(cmpClass); 
     this.resolver.resolveComponent(decoratedCmp).then(factory => { 
     let injector = ReflectiveInjector.fromResolvedProviders(providers, vcRef.parentInjector); 
      vcRef.createComponent(factory, 0, injector, []); 
     }); 
    } 
} 

ある

"Cannot resolve all parameters"

ようになって問題を保ちますこのサービスを編集して、オンザフライでコンポーネントを作成するだけでなく、そのコンポーネントにサービスを注入することもできます。どうすればいいですか?私はそれがあるか、それがどこから来るのか何を言うことができない

let injector = ReflectiveInjector.fromResolvedProviders(providers, vcRef.parentInjector); 

+0

「すべてのパラメータを解決できません」.. :( –

+0

私は、これはちょっと遅れて来ているが、あなたは可能性が知っていますあなたのコンストラクタで 'private Resver:ComponentResolver'の前に' @Inject(ComponentResolver) 'を追加してみてください。あなたのコードを翻訳していないなら、コンパイラは' ComponentResolver'インスタンスを探す場所を知らない。 –

答えて

1

のコード行を見て、プロバイダパラメータが何であるかを説明してください...。この場合、私は

...あなたを言うだろう私もこの問題を抱えている

関連する問題