2017-01-20 5 views
6

ngTemplateOutlets、componentFactoryResolversで、奇妙なウサギの穴が消えて、ViewChildの奇妙なことが起こってしまった後...もっと良い方法があると思っています。テンプレートのHTML部分をAngular2に注入する

私はhtmlテンプレートが大きくなっているコンポーネントを持っています。 純粋に組織的な目的のために、私はいくつかのhtmlをサブテンプレート(他のファイル)に移動したいと思います。私はマスターテンプレートに1つの行を入れてみたいと思っていますが、すべてのスコープとコンテキストは変わらないはずです。

私はそれ自身のコンポーネントのすべてをラップアップすることで動作させることができますが、それは無駄だと思われます。また、@Output eventEmittersを無駄に思うようにする必要があります。

私が見つけた "良い"と最も近いのは[innerHtml]ですが、明らかにAngular2はそれがスローインするHTMLを処理しないため、これはうまくいきません。私は正直なところ、これを行う方法...通常のように処理されるいくつかのインラインテキストを挿入する単純な方法を考える必要はありません。

最適解が

<div> 
    all my regular content 
</div> 

<template [ngExternalTemplate]="./app/home/templates/my-template.html"></template> 

のようになります。そして、そのテンプレートに注入されたすべてのHTMLは、スコープとコンテキスト内のすべての通常のインラインHTMLがあろうと、アクセス、およびアクセスすることができるだろう。

これを解決する方法はありますか?私はhtmlが巨大になるのを見て嫌いですが、実際には同じビューを管理しているので、複数のコンポーネントに分割するべきではありません。

最後の手段として、私はガンプと少しアクションを取り替えることができますが、それはスーパーハッキーのようです。

答えて

1

非常に大きなテンプレートを作成するのではなく、テンプレートをコンポーネントに分割する必要があります。特定の問題については、テキストプリプロセッサが必要です。

+1

明らかに私はそれを複数のコンポーネントに分けることができますが、同じビューと同じデータセットを管理しているので、このケースには適切ではないと感じています –

+1

それらをすべて別々のコンポーネントに分割する...より良い答えが見つかりませんでした –

関連する問題