列导向垫台

2023-12-24

我遇到的情况是,从后端收到的数据是面向列的。该数据的示例如下:

[
    { columnName: "ID", cells: [1, 2, 3, 4, 5] },
    { columnName: "Name", cells: ["a", "b", "c", "d", "e"] }
]

到目前为止,我已经成功地配置了我的 mat-table,如下所示:

<table mat-table [dataSource]="data" class="mat-elevation-z8">
    <ng-container [matColumnDef]="column" *ngFor="let column of displayedColumns">
        <th mat-header-cell *matHeaderCellDef> {{column}} </th>
        <td mat-cell *matCellDef="let element">{{element | json}}</td>
    </ng-container>

    <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
    <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>

这给了我以下结果:

而实际上我希望看​​到这样的表格:

|------|------|
|  ID  | NAME |
|------|------|
|   1  |   a  |
|   2  |   b  |
|   3  |   c  |
|   4  |   d  |
|   5  |   e  |

有没有办法调整 matRowDef 以便将单元格属性定义为行?理想情况下,我只想在 mat-table 中更改此设置,因此我不需要操作我的数据并稍后将其转换回来。


您可以尝试根据需要修改现有响应:

HTML 代码:

<table mat-table [dataSource]="dataSource" class="mat-elevation-z8">

    <ng-container [matColumnDef]="column" *ngFor="let column of displayedColumns">
        <th mat-header-cell *matHeaderCellDef> {{column}} </th>
        <td mat-cell *matCellDef="let element"> {{element[column]}} </td>
    </ng-container>

    <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
    <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>

TS Code:

import { Component } from '@angular/core';

import { MatTableDataSource } from '@angular/material';

const ELEMENT_DATA: any[] = [
  { columnName: "ID", cells: [1, 2, 3, 4, 5] },
  { columnName: "Name", cells: ["a", "b", "c", "d", "e"] }
];

/**
 * @title Basic use of `<table mat-table>`
 */
@Component({
  selector: 'table-basic-example',
  styleUrls: ['table-basic-example.css'],
  templateUrl: 'table-basic-example.html',
})
export class TableBasicExample {
  displayedColumns = []
  dataSource = new MatTableDataSource([]);

  constructor() {
    // Take Column names dynamically
    ELEMENT_DATA.forEach(x => {
      this.displayedColumns.push(x.columnName)
    })

    // Format the array as you want to display
    let newlyFormedArray = ELEMENT_DATA.reduce((array, { columnName, cells }) => {
      cells.forEach((cell, index) => {
        array[index] = Object.assign({ [columnName]: cell }, array[index])
      })
      return array;
    }, [])
    this.dataSource = new MatTableDataSource(newlyFormedArray);
  }
}

StackBlitz https://stackblitz.com/edit/angular-y1buaf

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

列导向垫台 的相关文章

随机推荐

  • 如何禁用 cPanel URL

    我使用 cPanel 来托管我的网站 我注意到 如果访问我网站的人恰好是 Web 开发人员 他始终可以通过以下方式访问我的 cPanel 登录页面mydomain com 2082 mydomain com cpanel等等 最好不要让访问
  • 为特定包设置 java Logger

    有人可以向我解释一下如何为具体包中的各种类设置 java Logger 吗 例如 如果我拿到这个并进行设置 Logger logger Logger getLogger com google api client logger setLev
  • Razor 视图中的 ASP.NET MVC 4 命名空间问题

    我已将以下命名空间添加到我的 Views web config 文件中
  • 线性回归:如何求点与预测线之间的距离?

    我正在寻找点和预测线之间的距离 理想情况下 我希望结果显示在包含距离 称为 距离 的新列中 我的进口 import os path import numpy as np import pandas as pd import matplotl
  • 为什么使用 exec() 时会收到“NameError:名称未定义”?

    当我在控制台 在 PyCharm 中 中尝试此代码时 exec import random exec def f n treturn random randint 0 10 random randint 0 10 locals f 效果很好
  • scala 中对象与 main() 和 extends App 的区别

    我正在研究 ScalaInAction 书仍然是 MEAP 但代码在 github 上公开 现在我正在第 2 章中查看这个 restClient https github com nraychaudhuri scalainaction bl
  • 使用 iOS SDK Cognito Lambda 和 DynamoDB 为 AWS iOS 创建用户/开发人员定义的登录名

    我试图弄清楚这是否是使用 AWS 为 iOS 开发用户 开发人员定义的登录凭证的 正确 当前 正确流程 我正在从 Parse 迁移到 AWS 所以只阅读了 AWS 一周 下载 安装并构建一个用于注册用户的 iOS 应用程序 例如电子邮件和密
  • Python 3 对元组列表进行排序? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我是一个Python新手 我有一个问题 有人告诉我要与我为同一程序发布的另一篇文章分开询问这个问题 这是家庭作业 所以我
  • 汉堡菜单旋转至新活动箭头

    我注意到 随着 Android 版 Gmail 的最新更新 当您单击一封电子邮件时 会打开一个新的 Activity 由于后退箭头 我假设它不是片段 然而 新活动的后退箭头并不像默认情况下那样显示 这主界面的汉堡菜单旋转成箭头在动画中 请参
  • 寻找类似表的数据结构

    我有2组数据 假设一个是一个民族 另一个是一个群体 一个人可以在多个组中 而一个组中可以有多个人 我的操作基本上是对团体和人员进行 CRUD 以及一种确保人员列表属于不同组的方法 这被称为 alot 现在我正在考虑制作一个由二进制 0 和
  • 这些位掩码实际上是如何工作的?

    例如 NSCalendar 中的此方法采用位掩码 NSDate dateByAddingComponents NSDateComponents comps toDate NSDate date options NSUInteger opts
  • VSCode 中用于 Markdown 链接的键盘快捷键?

    从其他文本编辑器我习惯于添加 Markdown 链接 选择我想要链接的单词 在我的 Mac iPad Pro 键盘上按 cmd K 这会在标记的单词周围加上方括号 附加一对普通括号 并将光标放在这两个括号之间 以便我可以 只需按 cmd V
  • SQL:Like 与 Contains - 不同的结果

    我正在一个表上运行两个查询 SELECT MSDS FROM dbo MSDSSearch3 WHERE CONTAINS MSDS STYCAST And SELECT MSDS FROM dbo MSDSSearch3 WHERE MS
  • java 8中按多个字段名称分组

    我从 POJO 中找到了按某些字段名称对对象进行分组的代码 下面是代码 public class Temp static class Person private String name private int age private lo
  • 与 BouncyCastle 签署 CSR

    过去几天我一直在寻找解决我的问题的方法 但找不到任何东西 我的代码中遗漏了一些东西 但我不知道是什么 不知何故 当我签署我的 PKCS 10 时 链就断了 基本上我有一个服务器和一个客户端 我想让客户端向服务器发送 CSR 然后服务器对其进
  • 如何在 SwiftUI 应用程序中记录 Firebase Analytics 屏幕名称?

    我正在尝试在我的应用程序中记录屏幕名称 但大约 95 的屏幕名称未在 Firebase Analytics 中设置 In onAppear为了我的观点Analytics setScreenName screenName screenClas
  • windows下如何删除回收站中的文件? Python

    我正在尝试使用 python 删除回收站中的文件 但我找不到方法 谢谢 对于 Windows 操作系统 您可以使用winshell https github com tjguk winshell模块和它的empty https winshe
  • 有没有办法在 MySQL / Rails 中强制区分大小写以进行单个查找?

    我正在搜索一些标签 有些用户喜欢 猫 而另一些用户喜欢 猫 想想看 无论如何 有没有办法强制特定的查找区分大小写 例如 Tag find some special option here 有任何想法吗 您还可以在不更改列属性的情况下执行区分
  • C语言从文件中删除一行

    我想删除文件中的某些行 并根据行的某些部分是否与指定的字符串匹配来在同一文件中插入某些行 有没有一种方法可以在不使用临时文件将内容复制到等等的情况下执行此操作 问题是 文件 本质上 是磁盘上的字节数组 或任何其他物理基底 但是 无论如何 字
  • 列导向垫台

    我遇到的情况是 从后端收到的数据是面向列的 该数据的示例如下 columnName ID cells 1 2 3 4 5 columnName Name cells a b c d e 到目前为止 我已经成功地配置了我的 mat table