2016-09-27 10 views
1

コンポーネントを動的に作成するのに役立つ「コンポーネントファクトリ」を作成しています。このファクトリを使用して、 PopOvers、モーダル、オーバーレイなどコンポーネントから「ルート」ViewContainerRefにアクセスする方法

これは、コンポーネントを作成する方法を添付しています

attach<T>(component: ComponentType<T>, viewContainerRef: ViewContainerRef): ComponentRef<T> { 
    let componentFactory = 
     this.componentFactoryResolver.resolveComponentFactory(component); 
    let ref = viewContainerRef.createComponent(
     componentFactory, 
     viewContainerRef.length, 
     viewContainerRef.parentInjector); 

    return ref; 
} 

方法は、私が作成するコンポーネントの種類を受け入れ、そして何ViewContainerそれがに追加する必要があります。

このメソッドをComponentの内部から呼び出すときは、コンポーネントViewContainerを使用してこのメ​​ソッドを呼び出します。そしてこれはうまくいく!

しかし、新しいコンポーネントを "root" ViewContainerに作成するかどうかを指定するオプションがあります。 HTMLの本文

これは可能ですか?私はAngular2が本当に新しいので、おそらく私は本当にオフトラックで、これを他の方法で解決する必要があります。

答えて

2

興味のあるすべての人にルートコンポーネントの参照を提供するモジュールを実装できます。

だからまず、そのモジュールを作成し、インジェクタに入れます。

あなたのアプリケーションのルート内にインジェクタからのモジュールが必要です。ブートストラップしてルートコンポーネントを登録する必要があります(ちょうどウィンドウとして手に入れることができるので、 ElementRefを実装していません)。

このようにして、モジュールを任意のサブコンポーネントに挿入し、ルート要素の参照を求めて、何でも喜んでください。

関連する問題