角度を使用する4.0.3ngForTemplate - ContentChild経由でテンプレートを使用するか、デフォルトに戻す
配列をリストとして表示するためにコンポーネントを作成しようとしています。このコンポーネントにテンプレートを渡すオプションが必要です。テンプレートが渡された場合、それを使ってリストがレンダリングされます。それ以外の場合は、埋め込みテンプレートを使用してレンダリングする必要があります。
Plunkrは私がしようとしていることを部分的に解決しています。テンプレートをコンポーネントに渡し、それを使ってコンポーネントをレンダリングする方法を示しています。それはここに見つけることができます:https://embed.plnkr.co/ollxzUhka77wIXrJGA9t/
私はそれをフォークし、必要なデフォルトのテンプレート機能を追加しようとしました。これを行うには、私がしました:src/app.ts
で
を:
- はテンプレートなし(ライン29-30)
src/dynamic-list.component.ts
で
- はテンプレートなし(ライン29-30)
と
dynamic-list
コンポーネントのインスタンスを追加しました:- フォールバックテンプレート(行5-7)を追加しました
- は、埋め込まれたデフォルトのテンプレート
への参照を取得するために@ViewChild(TemplateRef)
を使用して、それが他のdefaultItemTemplate
作成しdefaultItemTemplate
(ライン4)
itemTemplate
を使用するngForTemplate
参照を修正しますそのplunkrは次の場所にあります。https://embed.plnkr.co/QtMk3h/ 実行時には、この例外が発生します。
./DynamicListComponentクラスDynamicListComponentでエラー - インラインテンプレート:0:29
私は*ngForTemplate="itemTemplate"
作品を設定するなど、私が間違ってやっているかわからないんだけど、どちらも*ngForTemplate="defaultItemTemplate"
か*ngForTemplate="itemTemplate || defaultItemTemplate"
にはありません。
私は間違っていますか?
また、*ngFor
は廃止されていることに気付きました。今は間違った方法でこれに近づいていますか?
ありがとう!私はこの正確なソリューションを実際に実装していませんでしたが、ngifを使用してテンプレートが存在するかどうかを判断するというアイディアが得られました。 – Josh