ฉันกำลังดิ้นรนเพื่อหาวิธีทำสิ่งนี้ ในองค์ประกอบหลักแม่แบบจะอธิบายถึง 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
, แต่พวกเขาไม่ได้ดูเหมือนจะให้วิธีแก้ปัญหานี้เท่าที่ผมสามารถมองเห็น