我正在尝试显示用户表。每个<tr>
标签都由以下内容描述UserRowComponent
:
@Component({
selector: 'user-row',
template: `
<tr>
<td>{{ user.first_name }}</td>
<td>{{ user.last_name }}</td>
</tr>
`
})
对于我正在使用的用户循环:
<tr>
<!-- head of tabe -->
<th>...<th>
....
</tr>
<user-row *ngFor="let user of users" [user]="user">
但结果我得到了带有多个<user-row></user-row>
标签的表格,<tr>
里面有标签。
有一个解决方案 - 将selector
属性设置为类似并从模板tr.user-row
中删除包装<tr>
标签。<user-row>
但是如果我需要在同一个表中显示每个用户的订单列表,<user-row>
就像这样:
<tr>...user-1 row...</tr>
<tr>
<td>Order id</td>
<td>Order date</td>
<td>Order amount</td>
</tr>
<tr>...user-1 order-1 row ...</tr>
<tr>...user-1 order-2 row ...</tr>
<!-- user-2 with orders
user-3 with orders
etc.
-->
因此,最好*ngFor
只显示template
属性中的内容,而不用选择器标签包装。组件的模板会这样写:
@Component({
selector: 'user-row',
template: `
<tr>
<td>{{ user.first_name }}</td>
<td>{{ user.last_name }}</td>
</tr>
<user-orders-list [orders]="user.orders">
`
})
和模板<user-order-list>
:
@Component({
selector: 'user-row',
template: `
<tr>
<td>Order id</td>
<td>Order date</td>
<td>Order amount</td>
</tr>
<user-order-row *ngFor="let order of orders" [order]="order">
`
})
模板<user-order-row>
:
@Component({
selector: 'user-order-row',
template: `
<tr>
<td>{{ order.id }}</td>
<td>{{ order.date }}</td>
<td>{{ order.amount }}</td>
</tr>
`
})