【问题标题】:Render table(2D array) N*M size渲染表(二维数组)N*M 大小
【发布时间】:2017-11-30 14:08:55
【问题描述】:

我想呈现给定数组的表格,例如let results=[[1,2,3],[4,5,6],[7,8,9]] 看起来像:

1 2 3
4 5 6
7 8 9

但不知道如何使用这样的模板正确设置行数

<table>
  <ng-container *ngFor="let result of results">
    <tr>
      <td>{{result}}</td>
    </tr>
  </ng-container>
</table>

事实上,我得到了只有一排的桌子。如何管理这种情况下的行数?由于缺乏 Angular2+ 的经验,这可能看起来微不足道,但很难管理。 谢谢!

【问题讨论】:

标签: angular


【解决方案1】:

对于这样的情况,我喜欢使用嵌套数组并在顶部数组上作为&lt;tr&gt; 元素进行迭代,然后在该“行”上进行迭代以显示元素。 假设您将数组更改为:

let results=[[1,2,3],[4,5,6],[7,8,9]]

你的看法是:

<table>
  <tr *ngFor="let row of results">
    <td *ngFor="let item of row">{{item}}</td>
  </tr>  
</table>

如果您无法将数组转换为嵌套数组,您可以创建一个函数来执行此操作并在模板中调用它,如下所示:

<tr *ngFor="let row of transformToNestedArray(results, 3)">

并且这个函数将在您的代码中定义为:

transformToNestedArray = (arr, cols) => {
  let newArray = [];
    while(arr.length){
      newArray.push(arr.splice(0, cols))
  }
  return newArray;
}

该函数的结果只会在视图中使用,不会修改您的“结果”变量。

【讨论】:

  • 感谢您的快速响应,但我需要完全处理平面数组...
  • 我编辑了答案以添加将您的 1D 数组转换为 2D 数组的 javascript 代码,仅用于显示它。它不会修改您的原始数组:)
  • 谢谢你,Bruno,这样的方法解决了问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多