EventEmittersを使用してネストされたコンポーネントのチェーンを介してデータ/イベントを渡そうとしています。しかし、私は1つの問題を解決する方法は、これが起こるのを防ぐかもしれないと思う。Angularの埋め込みビューでイベントを購読できますか?
私はコンポーネントの1つに埋め込みビューを作成しているので、テーブル構造を壊さないようにしています。そのコンポーネントの場合、関連するコードは次のとおりです。
@ContentChild(DataTableAddRecordComponent) adder: DataTableAddRecordComponent;
@ViewChild('dtAdder', { read: ViewContainerRef }) adderContainer: ViewContainerRef;
ngAfterContentInit(): void {
if (this.adder && this.adderContainer) {
this.adderContainer.createEmbeddedView(this.adder.templateRef);
}
}
ここでは、同じコンポーネントの一部のHTMLを示します。イベントを購読しようとしていることが、実際のコンポーネントの代わりにng-containerであることに注目してください。再びこれは私が<data-table-adder>
タグが私のテーブルをねじ込む得ることはありません。しかし、それがテンプレートにないときに、そのコンポーネントからイベントをキャッチするにはどうすればいいですか(または、他に何か不足しているものがありますか)。
「this.adder.templateRef」とは何ですか? –
上記のコードをより詳しく見ると、加算器がcontentchildとして宣言されたコンポーネントに過ぎないことがわかります。 TemplateRefは、これらの埋め込みビューを作成するためのコンポーネントのプロパティです(ビューテンプレートへの参照)。 https://angular.io/api/core/TemplateRef – 333Matt