gpt4 book ai didi

javascript - 如何在 ngFor 循环 [Angular] 中制作可扩展的表格行?

转载 作者:行者123 更新时间:2023-11-30 19:33:00 25 4
gpt4 key购买 nike

我嵌套了表格,单击一行时我需要在表格行下方显示数据。但是,数据显示在 ngRepeat 的末尾。

HTML:

  <table class="table table-hover table-bordered table-responsive-xl">
<thead>
<th> Name </th>
<th> Place </th>
<th> Phone </th>
</thead>

<tbody>

<tr *ngFor="let data of data1" (click) ="expand()">
<td> +{{data.name}} </td>
<td> {{data.place}} </td>
<td> {{data.phone}} </td>
<td> {{data.hobbies}} </td>
<td> {{data.profession}} </td>
</tr>

<ng-container *ngIf="expandContent">
<tr *ngFor="let data of data2">
<td> {{data.datades.name}} </td>
<td> {{data.datades.hobbies}} </td>
<td> {{data.datades.profession}} </td>
</tr>
</ng-container>
</tbody>
</table>

组件:

export class AppComponent  {
expandContent = true;
data1 =[{
'name' : 'john',
'place' : 'forest',
'phone' : '124-896-8963'
},{
'name' : 'Jay',
'place' : 'City',
'phone' : '124-896-1234'
}, {
'name' : 'Joseph',
'place' : 'sky',
'phone' : '124-896-9632'
},
]

data2 =[{
'whoseData' : 'john',
'datades' : {
'name' : 'john',
'hobbies' : 'singing',
'profession' : 'singer'
}
},{
'whoseData' : 'Jay',
'datades' : {
'name' : 'jay',
'hobbies' : 'coding',
'profession' : 'coder'
}
}
]

expand(){
this.expandContent = !this.expandContent
}
}

单击第一行时,我想在其下方显示与第一行关联的数据。

预期结果 enter image description here

DEMO

最佳答案

您需要进行以下更改:

  1. 在同一 ngFor 循环迭代中包括主行和相应的详细信息行
  2. data 对象添加一个 expanded 属性,而不是全局的 expandContent
  3. 定义一个方法来过滤点击行的详细信息

模板可能如下所示:

<ng-container *ngFor="let data of data1">
<tr (click)="data.expanded = !data.expanded">
<td> {{ data.expanded ? '&ndash;' : '+'}} {{data.name}} </td>
<td> {{data.place}} </td>
<td> {{data.phone}} </td>
<td> {{data.hobbies}} </td>
<td> {{data.profession}} </td>
</tr>
<ng-container *ngIf="data.expanded">
<tr *ngFor="let details of findDetails(data)">
<td> {{details.datades.name}} </td>
<td> {{details.datades.hobbies}} </td>
<td> {{details.datades.profession}} </td>
</tr>
</ng-container>
</ng-container>

其中 findDetails 定义为:

findDetails(data) {
return this.data2.filter(x => x.whoseData === data.name);
}

参见 this stackblitz用于演示。

关于javascript - 如何在 ngFor 循环 [Angular] 中制作可扩展的表格行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56243655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com