You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从列头数组为Angular表格单元格添加data-cell属性

问题:Angular表格移动端堆叠样式的data-cell属性正确赋值

我通过文末的列数组与行数组在Angular中创建了一个表格。尝试通过编程方式为每个单元格添加data-cell属性,虽然成功添加上了属性,但无法为每个单元格设置对应的列头数据。

桌面端表格展示正常,移动端我要切换为堆叠样式(见下方图片),希望借助data-cell属性将列头显示在对应单元格数据的上方,也就是当前图片中冒号的位置。

目前我写了如下代码,需要帮忙完成最终实现:

const tds = Array.from(document.querySelectorAll('td'));

// 以编程方式添加data-cell属性
tds.forEach(td => {
  this.columns.forEach((col) => {
      td.setAttribute('data-cell', col.header)
  })      
})

// 期望最终效果如下...
// <td data-cell="Beverages"

列与行数据定义

interface TableColumn {
  header: string;
  key: string;
  sortable: boolean;
  cell: (item: any) => string | number;
}

let columns: TableColumn[] = [
  {
    header: "Beverages",
    key: "name",
    sortable: true,
    cell: (item: any) => {
      return item.name;
    }
  },
  {
    header: "Cost",
    key: "cost",
    sortable: true,
    cell: (item: any) => {
      return item.cost;
    },
  },
  {
    header: "Text",
    key: "text",
    sortable: true,
    cell: (item: any) => {
      return item.text ? "Yes" : "No";
    },
  },
  {
    header: "Date",
    key: "date",
    sortable: true,
    cell: (item: any) => {
      return item.date;
    },
  },
  {
    header: "Unsortable",
    key: "unsortable",
    sortable: false,
    cell: (item: any) => {
      return item.unsortable;
    },
  }
]

let rows: any[] = [
  {
    id: 1,
    name: "Water",
    cost: 100,
    text: true,
    date: "05021967",
    unsortable: "12 Fountain Street, Andover, MA"
  },
  {
    id: 2,
    name: "Soda",
    cost: 250,
    text: false,
    date: "12121963",
    unsortable: "23 Oakland Avenue, Louisville, KY"
  },
  {
    id: 3,
    name: "Coffee/Tea",
    cost: 50,
    text: true,
    date: "03111964",
    unsortable: "4 Maple Road, Stone Mountain, GA"
  }
]

移动端堆叠表格样式

内容的提问来源于stack exchange,提问作者user3472810

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:22:02