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);
「すべてのパラメータを解決できません」.. :( –
私は、これはちょっと遅れて来ているが、あなたは可能性が知っていますあなたのコンストラクタで 'private Resver:ComponentResolver'の前に' @Inject(ComponentResolver) 'を追加してみてください。あなたのコードを翻訳していないなら、コンパイラは' ComponentResolver'インスタンスを探す場所を知らない。 –