2016-12-22 5 views
10

動的コンポーネントを実装しようとしています。 私の要件は、3つのクラスLayoutComponent、MenuService、およびDynamicServiceがあります。 LayoutComponentは、操作を実行した後、MenuServiceのメソッドを呼び出して基本操作を実行します.MenuServiceのメソッドは、動的コンポーネントを作成するDynamicServiceのメソッドを再度呼び出します。Anguler2 - 未処理のPromise拒否:ViewContainerRefのプロバイダがありません! (動的テンプレートで)

は、ここでは

+0

なぜサービス名を「XxxComponent」にしていますか? ( 'MenuComponent'や' DynamicComponent'のように? –

+0

明確なルーキーミスが修正されました – Ranjan

答えて

21

ViewContainerRef

Unhandled Promise rejection: No provider for ViewContainerRef! ;

だけでなく、サービスに、コンポーネントまたはディレクティブに注入することができる与え、次のエラーと私の Plunkerです。

コンポーネントとディレクティブは、それ自体がアタッチされている要素のViewContainerRefを取得します。サービスはいずれのビューにも関連付けられていません。あなたは何ができるか

は、コンポーネントにViewContainerRefサービスを注入して、コンストラクタでサービスにViewContainerRefを渡すことです。このサービスを注入するすべてのサービスまたはコンポーネントは、それが保持するViewContainerRefにアクセスできます。

+0

コード内で同じことをして、 'ViewContainerRef'を注入し、コンストラクタでアクセスするサービスに渡してください。間違っていますか? – Ranjan

+1

コンポーネントにViewContainerRefを正しく挿入する方法を教えてください。 – Ranjan

+3

コンストラクタ(viewContainerRef:ViewContainerRef、サービス:MyService){service.vcRef = viewContainerRef;} –

関連する問題