2016-11-01 15 views
1

私は複数のサブコンポーネントを含むAngular 2コンポーネントを持っています。それらのうちのいくつかについては、それらをロードするのにはかなり高価であり、ロードする必要は全くありません。たとえば、ユーザーがそれをスクロールしていない場合などです。テンプレートの一部を角度2で遅延ロードする方法は?

とにかく、私はどのように怠惰なルートを読み込むことができるのか知っていますが、テンプレートを読み込む方法がありますか?要素がビューポート内またはその近くにある場合のみ同じですか?

答えて

0

表示するサブコンポーネントを分離して、小さなコンポーネントにまとめて、一緒にロードすることができます。 ロード時間を短縮するには、 1.コンポーネントテンプレートファイルをインラインで使用してください。 2.テンプレートのレンダリングを回避できる* ngIfディレクティブをテンプレート内で使用すると、コンポーネントインスタンスはそのように作成されません。ただし、* ngを使用している場合は、DOMを適切にリフレッシュしないことをお勧めします。DOMを作成し、DOMの[hidden]属性でバインドして使用することも可能です。

0

ロードテンプレートを遅延させる方法はありません。あなたができることは、遅延ロードモジュールを遅延させることです。 How to manually lazy load a module?

これをViewContainerRef.createComponent()(例としてAngular 2 dynamic tabs with user-click chosen componentsを参照)と併用すると、ユーザーが十分にスクロールした場合に表示したいコンポーネントだけを動的に追加することができます。

+0

いいえ。ありがとう!別の質問かもしれませんが、他のすべてがロードされたらコンポーネントをロードする方法はありますか?コンポーネントが他のすべてのコンポーネントがロードされるまでコンポーネントを強制的に待機させる種類。 – tschaka1904

+0

私は単純な ''または 'が最も簡単で効率的な方法だと思います。 'isAllLoaded'とは、正確に定義する必要があることを意味します。 –

関連する問題