Saya berjuang untuk menemukan cara untuk melakukan ini. Dalam komponen induk, template mendeskripsikan a table
dan thead
elemennya, tetapi mendelegasikan rendering tbody
ke komponen lain, seperti ini:
<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>
Setiap komponen myResult membuat tr
tagnya sendiri , pada dasarnya seperti ini:
<tr>
<td>{{ entry.name }}</td>
<td>{{ entry.time }}</td>
</tr>
Alasan saya tidak meletakkan ini secara langsung di komponen induk (menghindari kebutuhan akan komponen myResult) adalah karena komponen myResult sebenarnya lebih rumit daripada yang ditampilkan di sini, jadi saya ingin meletakkan perilakunya dalam komponen dan file terpisah.
DOM yang dihasilkan terlihat buruk. Saya yakin ini karena tidak valid, karena tbody
hanya dapat berisi tr
elemen (lihat MDN) , tetapi DOM yang saya buat (disederhanakan) adalah:
<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>
Apakah ada cara kita bisa mendapatkan hal yang sama diberikan, tetapi tanpa pembungkus <my-result>
tag , dan saat masih menggunakan komponen untuk menjadi satu-satunya yang bertanggung jawab untuk merender baris tabel?
Saya telah melihat ng-content
, DynamicComponentLoader
, yang ViewContainerRef
, tetapi mereka tampaknya tidak memberikan solusi untuk ini sejauh yang saya bisa melihat.