Bunu yapmanın bir yolunu bulmakta zorlanıyorum. Bir üst bileşende, şablon a tableve theadelemanını açıklar , ancak tbodybunu başka bir bileşene oluşturan temsilciler şunun gibi:
<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>
Her myResult bileşeni tr, temelde şu şekilde kendi etiketini oluşturur:
<tr>
<td>{{ entry.name }}</td>
<td>{{ entry.time }}</td>
</tr>
Bunu doğrudan üst bileşene koymamamın nedeni (bir myResult bileşenine olan ihtiyacı ortadan kaldırarak) myResult bileşeninin aslında burada gösterilenden daha karmaşık olmasıdır, bu nedenle davranışını ayrı bir bileşene ve dosyaya koymak istiyorum.
Ortaya çıkan DOM kötü görünüyor. Bunun geçersiz olmasından kaynaklandığına inanıyorum, çünkü tbodyyalnızca tröğeleri içerebiliyor (MDN'ye bakın) , ancak oluşturulan (basitleştirilmiş) DOM'm:
<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>
Aynı şeyi sarmalama <my-result>etiketi olmadan ve yine de bir tablo satırının işlenmesinden tek sorumlu olarak bir bileşen kullanırken oluşturmanın bir yolu var mı?
Ben baktım ng-content, DynamicComponentLoader, ViewContainerRefama bildiğim kadarıyla gördüğünüz gibi bu bir çözüm sağlamak için görünmüyor.