Angular 6 ngFor 按键分组的表列表

2024-03-01

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

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

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

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>

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


你必须改变数据结构。

解决方案。

你的数据

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()到一个变量中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 6 ngFor 按键分组的表列表 的相关文章

随机推荐

  • 在 git 标签名称中添加“/”来创建分层/嵌套标签是否存在问题?

    我们在 git 存储库上创建了一个标签 2012 02 16 然后我们注意到 在源树内部 2012 和 01 被表示为文件夹 可以整齐地打开和关闭以显示和隐藏标签 拥有嵌套的标签层次结构似乎是一种组织标签的好方法 而不仅仅是一个平面列表 这
  • VA(虚拟地址)和RVA(相对虚拟地址)

    作为链接器输入的文件称为目标文件 链接器产生一个图像文件 它又被加载器用作输入 来自 Microsoft 可移植可执行文件和通用对象文件格式规范 RVA 相对虚拟地址 在图像文件中 项目的地址 加载到内存后 图像文件的基地址 从中减去 商品
  • 如何释放Mongodb使用的缓存?

    Mongodb使用内存映射文件 当我使用很长时间时 我发现在ubuntu中通过命令 free m 剩余的可用内存越来越少 并且缓存使用了很多 那么杀死 Mongodb 缓存仍然会花费很多吗 我怎样才能释放缓存 MongoDB 将 至少看起来
  • Java ConcurrentHashMap 不是线程安全的..什么?

    我之前使用过 HashMap public Map
  • 在Python中以十六进制打印变量

    我正在尝试找到一种以十六进制打印字符串的方法 例如 我有这个字符串 然后将其转换为其十六进制值 my string deadbeef my hex my string decode hex 我怎样才能打印my hex as 0xde 0xa
  • 有没有办法通过脚本在Google开发者控制台中启用高级Google服务?

    again 我创建了一个使用 UrlShortener Url insert 功能的嵌入电子表格脚本 我的客户希望能够创建此电子表格的新实例以与同事共享 我已经实现了此功能 但是当我开始测试新实例时 我发现我必须在 Google 开发人员控
  • 了解 Google Cloud Platform 微服务架构设计的成本估算

    我正在将整体应用程序重新设计为微服务架构 并希望使用 Google Cloud Platform GCP 来托管整个解决方案 我很难理解他们的成本明细 并且担心构建后我的成本将无法控制 这是一个个人项目 但我希望在启动后会有很多用户 所以我
  • 如何禁用父小部件中的所有用户输入小部件(按钮、条目......)?

    我正在使用 Python 和 Tkinter 设计 GUI 注册用户输入命令所需的所有按钮和条目都放置在主目录中frame http effbot org tkinterbook frame htm是他们的子部件 我想知道是否可以通过将一些
  • TensorFlow 对象检测 api:使用预训练模型更改训练时的类数时的分类权重初始化

    我不仅想利用特征提取器预训练权重 还想利用特征映射层的分类器 定位预训练权重 使用张量流对象检测 API 来微调张量流对象检测模型 SSD 当我的新模型的类数量与我用于微调检查点的预训练模型不同时 TensorFlow 对象检测 API 将
  • lambda 比 python 中的函数调用慢,为什么

    我认为lambda比函数调用更快 但是经过测试 我发现我错了 函数调用肯定比 lambda 调用快 有人能告诉我为什么吗 那么如何加快Python中的函数调用速度呢 我正在使用 Ubuntu 14 04 和 Python 2 7 6 gt
  • 使用 docker 运行 dotnet 1.1

    我正在尝试在我的 Mac 上运行 NET Core 应用程序 我正在使用 VS Core 并将项目升级到 NET 1 1 当我通过 VSCode 运行它时一切正常 但是当我使用 Docker 运行它时它失败了 我执行以下步骤 dotnet
  • 使用 jQuery 将数据从一个表的选定行复制到另一个表

    我有两张表 其中一张有我的产品数据 例如名称和条形码 另一个是空的 我想复制产品表 仅限选定的行 通过 jQuery 进入第二个表 table style max width 50 thead tr th bar code th th pr
  • 语法错误,意外的 T_SL

    我对 php 相当陌生 我正在使用一个脚本来创建一个名为 mime mailer 的函数 该函数本质上允许我使用 PHP 发送能够使用 CSS 设计的电子邮件 而不仅仅是纯文本 然而 在我的注册脚本中 我尝试编写一些发送 CSS 电子邮件的
  • 如何计算向量的置信区间? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个向量 vector lt c 12 17 24 35 23 34 56 如何计算 R 中该向量的置信区间 90 99 95 这是我想
  • 在 Meteor Js 中加密 Mongodb 数据

    插入文档时是否可以对特定集合的某些 Mongodb 字段进行加密 然后在发布合集的同时解密 我不确定这对于您的用例来说是否太过分了 Mylar http css csail mit edu mylar 是一个支持客户端加密的 Meteor
  • Android Studio 快捷方式,如 Eclipse

    I am new to Android Studio and want to know about shortcuts In Eclipse we use shift ctrl O for importing In Android Stud
  • Web Crypto API 在 AES 解密时抛出“DOMException”

    我想执行基本的 AES CBC 解密 我有字符串encData使用 128 位密钥加密rawKey 初始化向量defaultIV为零 我只想使用 Web Crypto API 而不使用第三方库 可以做吗 window crypto subt
  • SBCL:将 Hunchentoot 应用程序部署为可执行文件

    我开始使用 SBCL Common Lisp 并希望使用 Hunchentoot 开发一个小型 Web 应用程序 为了便于部署 我计划使用 sb ext save lisp and die 将所有内容保存在二进制文件中 因为我可以忍受大输出
  • 以编程方式设置 closereason

    我想在表单内调用 This Close 后设置表单的 CloseReason 通常 此表单会通过调用 This Close 自行关闭 但我想询问用户是否真的想要关闭表单 并发送包含一些信息的 mbox 但我有这个 protected ove
  • Angular 6 ngFor 按键分组的表列表

    我的 Angular 6 应用程序需要显示一个表格列表 其中表格是对其组成元素的一组化学分析 假设我有金属合金A 我对它进行了不同的化合物分析 找到了它的化学成分 Fe 0 001 Cu 0 042 等 这是我的数据源 它只是一个带有模拟的