Я намагаюся знайти спосіб це зробити. У батьківському компоненті шаблон описує a 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, але вони , здається, не забезпечують рішення цієї проблеми , наскільки я можу бачити.