gpt4 book ai didi

Angular 6 ngFor按键分组的表列表

转载 作者:太空狗 更新时间:2023-10-29 18:12:37 27 4
gpt4 key购买 nike

我的 Angular 6 应用需要显示一个表格列表,其中一个表格是对其组成元素的一组化学分析。

假设我有一种金属合金A。我对它进行了不同的化合物分析,发现它的化学成分:Fe:0.001%,Cu:0.042%,等等。

这是我的数据源,它只是一个带有模拟的 typescript 文件

import { Certificate } from './certificate';

export const CERTIFICATES: Certificate[] = [
{ serie: '1050 AJ', ident: 'Fe', moy_certified: 0.297 },
{ serie: '1050 AJ', ident: 'Cu', moy_certified: 0.04 },
{ serie: '1050 AJ', ident: 'Mn', moy_certified: 0.0374 },
{ serie: 'X332.0 AC', ident: 'V', moy_certified: 0.019 },
{ serie: 'X4002 AA', ident: 'Mn', moy_certified: 0.037 }
];

我想在表格列表中使用 Angular 6 在 HTML 中显示此数据,其中对系列的每个分析都按如下方式分组:

Serie: 1050 AJ
-------------------------
| Element | Composition |
-------------------------
| Fe | 0.0297 |
-------------------------
| Cu | 0.04 |
-------------------------
| Mn | 0.0374 |

Serie: X332.0 AC
-------------------------
| Element | Composition |
-------------------------
| V | 0.019 |

Serie: X332.0 AC
-------------------------
| Element | Composition |
-------------------------
| Mn | 0.037 |

我的 HTML 文件现在看起来像这样

<ul class="cert-result">
<li *ngFor="let certificate of certificates">
<table>
<tr>
<th>Serie</th>
<th>Element</th>
<th>Composition</th>
</tr>
<tr>
<td>{{certificate.serie}}</td>
<td>{{certificate.ident}}</td>
<td>{{certificate.moy_certifiee}}</td>
</tr>
</table>
</li>
</ul>

显然,这不是正确的方法,因为它为我的数据源的每个元素创建了一个表。

最佳答案

你必须改变数据结构。

解决方案。

your data

export const CERTIFICATES: Certificate[] = [
{ serie: '1050 AJ', ident: 'Fe', moy_certified: 0.297 },
{ serie: '1050 AJ', ident: 'Cu', moy_certified: 0.04 },
{ serie: '1050 AJ', ident: 'Mn', moy_certified: 0.0374 },
{ serie: 'X332.0 AC', ident: 'V', moy_certified: 0.019 },
{ serie: 'X4002 AA', ident: 'Mn', moy_certified: 0.037 }
];

在您的组件中创建一个方法。让我们说 formatedData()

import { CERTIFICATES } from './certificate';


class AppComponent {
//Todo...

objectKey(obj) {
return Object.keys(obj);
}

formatedCerts() {
return CERTIFICATES.reduce((prev, now) => {
if (!prev[now.serie]) {
prev[now.serie] = [];
}

prev[now.serie].push(now);
return prev;
}, {});

/*
Now your data : { "1050 AJ": [ .... ], "X332.0 AC": [...], ... }
*/

}

}

现在在模板中:

    <ul class="cert-result">
<li *ngFor="let key of objectKey(formatedCerts())">
<span>{{key}}</span>
<table>
<tr>
<th>Élément</th>
<th>Moy. Certifiée</th>
</tr>
<tr *ngFor="let certificate of formatedCerts()[key]">
<td>{{certificate.ident}}</td>
<td>{{certificate.moy_certifiee}}</td>
</tr>
</table>
</li>
</ul>

如果要优化,将formatedCerts()的数据存入一个变量。

关于Angular 6 ngFor按键分组的表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50395529/

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