2017-04-05 17 views
2

実行時にテンプレートURLを動的に変更して、コンポーネントでレンダリングされたビューを変更できるようにする必要があります。これを達成するための解決策はありますか? 例えば、私のコンポーネントはグリッドビューとリストビューの両方を必要としますが、ビューを両方とも同じテンプレートに作成するのではなく、別々のテンプレートファイルのビューを維持します。では、実行時にコンポーネントのビューを変更するにはどうすればよいですか(つまり、現在のテンプレートを新しいテンプレートに置き換える)。前もって感謝します。実行時に角度2で実行時に動的にtemplateUrl値を変更する方法

+0

ほんの似たような質問がほんの数分前に聞かれましたhttp://stackoverflow.com/questions/43229609/angular-cli-use-different-templates-depending-on-the-environment –

+0

なぜあなたはそれらをしたいですか? 2つの異なるテンプレート? * ngIfで2つのdivを作成し、残りの部分をコンポーネントで処理するのはなぜでしょうか? –

+0

@PedroLopes Ya Right ...しかし、それは要件です...ユーザーはセレクタタグのテンプレートURLを入力として与えることができます。 – Manush

答えて

0

Angularでは、コンパイル時にテンプレート内のAngular固有の構文がJavaScriptに変換されるため、実行時にテンプレートURLを変更することはできません。あなたは何ができるか

は、代わりにあなたが展開可能にダイナミックなランタイムを含める必要があり、そのために、実行時に動的にコンポーネントを作成することができます

<ng-container *ngIf="isFoo"> 
template1 
</ng-container> 
<ng-container *ngIf="!isFoo"> 
template2 
</ng-container> 

です。現在、これはAoTをまったく防止しています(どこかで一緒に動作させるためにいくつかのハックがありましたが、試していません)。 この方法で、コンポーネントの作成時に使用するテンプレートを定義できます。

関連する問題