私はこれを行う方法を見つけるのに苦労しています。親コンポーネントでは、テンプレートはtableとそのthead要素を記述しtbodyますが、次のようにを別のコンポーネントにレンダリングします。
<table>
<thead>
<tr>
<th>Name</th>
<th>Time</th>
</tr>
</thead>
<tbody *ngFor="let entry of getEntries()">
<my-result [entry]="entry"></my-result>
</tbody>
</table>
各myResultコンポーネントはtr、基本的に次のように独自のタグをレンダリングします。
<tr>
<td>{{ entry.name }}</td>
<td>{{ entry.time }}</td>
</tr>
これを親コンポーネントに直接配置しない(myResultコンポーネントの必要性を回避する)理由は、myResultコンポーネントが実際にここに示すよりも複雑であるため、その動作を別のコンポーネントとファイルに配置したいためです。
結果のDOMは悪いように見えます。これはtbody、tr要素しか含めることができないため(MDNを参照)、無効であるためと考えられますが、生成された(簡略化された)DOMは次のとおりです。
<table>
<thead>
<tr>
<th>Name</th>
<th>Time</th>
</tr>
</thead>
<tbody>
<my-result>
<tr>
<td>Bob</td>
<td>128</td>
</tr>
</my-result>
</tbody>
<tbody>
<my-result>
<tr>
<td>Lisa</td>
<td>333</td>
</tr>
</my-result>
</tbody>
</table>
同じことをレンダリングできる方法はありますが、ラッピング<my-result>タグなしで、コンポーネントを使用してテーブル行のレンダリングを単独で担当しますか?
私が見てきましたng-content、DynamicComponentLoader、ViewContainerRef、しかし、彼らは私の知る限りこれに対する解決策を提供していないようです。