動的に作成された埋め込みビューにコンテキストデータを渡そうとしています。角度 - createEmbeddedViewでコンテキストを設定する
注:私はここで角度2.4.7
を使用していますが、私が達成しwhantものです:私のDialogPresetComponent(ダイアログのプリセットで
。 component.html):
このコンポーネントのビューには、私のダイアログ・フレームワーク内で使用する準備ができてテンプレートの束が含まれています。
<template #presetInfo>
{{options.description}} // Note this binding ! Here is the problem
</template>
それでも、このコンポーネントでは、私はこのようなものをテンプレートに参照を取得します:
@ViewChild('presetInfo', { read: TemplateRef }) presetInfo: TemplateRef<any>;
その後、私は店このtemplateRefはDialogService内にあるので、後でアクセスすることができます。 で
<div class='c-header'>
</div>
<div class='c-body'>
<div #container></div>
</div>
<div class='c-footer'>
</div>
DialogComponent(ダイアログ:ここ
は私のモーダルのテンプレートです:DialogComponent(dialog.component.html)で
.component.ts):私のDialogComponentグラブで
このようなコンテナへの参照:
options: DialogOptions = { title: 'Dialog title' };
:テンプレートを注入し、私はまた、私は私のdynamiclyからアクセスしたい属性を定義
@ViewChild('container', {read: ViewContainerRef }) containerRef: ViewContainerRef;
私は何をしようとしていますか:
私はテンプレート#presetInfo #container内と
だから、finaly私DialogComponentの文脈でを入れしようとしている、私はそれに権利を与え、私のコンポーネントで私のテンプレートを注入しますコンテキスト:私のDialogComponent(dialog.componentで
。TS):
// Where templateRef is the template previously defined in DialogPresetComponent
createEmbeddedView(templateRef: TemplateRef<any>) {
this.containerRef.createEmbeddedView(templateRef, this);
}
私の注入されたテンプレートで結合{{}} options.descriptionは(「この」右のコンテキストを渡す場合でも、動作しないという事実から来る問題私の場合はcreateEmbeddedView経由)。
フレームワークは、オプションが定義されていないことを教えてくれます。
ここには何が欠けていますか?
あり、この「文脈」のものについてのドキュメントの多くはないので、私はそれを正しい方法でやっていないんだと思います....
任意の手がかりやヒントを歓迎します!
ありがとうございます!
「this」をコンテキストとして渡しているようです。これは意図的ですか? –
はい、これは意図的なことですが、「これ」を渡すと、すべてのコンポーネントメンバーがインクルードされたテンプレートから利用できるようになります。 私のテンプレートがコンポーネントビューの一部だったのと同じように... – Clement