如何设计一个像这个有角度的图像的html表格?

Posted

技术标签:

【中文标题】如何设计一个像这个有角度的图像的html表格?【英文标题】:How to design a html table as like this image with angular? 【发布时间】:2021-12-03 08:49:12 【问题描述】:

我正在尝试以角度创建一个 html 表。我有一个包含在下面的 json。在 json 中首先有资产头和资产头子列表。在资产头子列表下有帐户头列表。 我想通过这个json设计一个html表格。

json

[
  
    assetHead: 'Fixed Asset',
    assetSubHeadList: [
      
        subHead: 'Property, Plant & Equipment',
        accountHeadList : [
          
            accId: 101234,
            accName: 'Office Equipment',
            obDebit: 72045,
            obCredit: 0,
            cpDebit: 0,
            cpCredit: 0,
            cbDebit: 75845,
            cbCredit: 0
          ,
          
            accId: 101234,
            accName: 'Motor Vehicle',
            obDebit: 72045,
            obCredit: 0,
            cpDebit: 0,
            cpCredit: 0,
            cbDebit: 75845,
            cbCredit: 0
          ,
        ]
      ,
    ],
  
];

餐桌设计会像这张图片

【问题讨论】:

【参考方案1】:

首先,为了性能优化,我会创建一个纯管道用于总和计算:

sum.pipe.ts

import  Pipe, PipeTransform  from '@angular/core';

@Pipe(
  name: 'sum'
)
export class SumPipe<T> implements PipeTransform 
  transform(arr: Array< [k in keyof T]: number >, prop: keyof T): any 
    return arr.reduce((sum, cur) => sum + cur[prop], 0);
  
 

那么如果您知道colspan 和rowspan 属性,那么您的设计应该很容易实现:

<table>
  <thead>
    <tr>
      <td rowspan="2">Acc Ca</td>
      <td rowspan="2">Accounts Head</td>
      <td colspan="2">Opening Balance Period</td>
      <td colspan="2">Current Period</td>
      <td colspan="2">Closing Balance</td>
    </tr>
    <tr>
      <td>Debit</td>
      <td>Credit</td>
      <td>Debit</td>
      <td>Credit</td>
      <td>Debit</td>
      <td>Credit</td>
    </tr>
  </thead>
  <tbody>
    <ng-container *ngFor="let asset of json">
      <tr>
        <td colspan="8"> asset.assetHead </td>
      </tr>
      <ng-container *ngFor="let subHeadItem of asset.assetSubHeadList">
        <tr>
          <td colspan="8"> subHeadItem.subHead </td>
        </tr>
        <tr *ngFor="let headItem of subHeadItem.accountHeadList">
          <td> headItem.accId </td>
          <td> headItem.accName </td>
          <td> headItem.obDebit </td>
          <td> headItem.obCredit </td>
          <td> headItem.cpDebit </td>
          <td> headItem.cpCredit </td>
          <td> headItem.cbDebit </td>
          <td> headItem.cbCredit </td>
        </tr>
        <tr>
          <td colspan="2"><b>Sub total</b></td>
          <td> subHeadItem.accountHeadList | sum: 'obDebit' </td>
          <td> subHeadItem.accountHeadList | sum: 'obCredit' </td>
          <td> subHeadItem.accountHeadList | sum: 'cpDebit' </td>
          <td> subHeadItem.accountHeadList | sum: 'cpCredit' </td>
          <td> subHeadItem.accountHeadList | sum: 'cbDebit' </td>
          <td> subHeadItem.accountHeadList | sum: 'cbCredit' </td>
        </tr>
      </ng-container>
    </ng-container>
  </tbody>
</table>

Ng-run Example

【讨论】:

以上是关于如何设计一个像这个有角度的图像的html表格?的主要内容,如果未能解决你的问题,请参考以下文章

如何像这样创建 iOS 表格视图?

角度6背景图像交叉淡入淡出动画

如何在表格 td、tcpdf 中对齐图像

如何在表格行中填充图像?

如何在角度仪表板中插入svg图像?

异步图像下载和调整图像高度后如何更新表格视图单元格