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