【问题标题】:Vertical table with dynamic data带有动态数据的垂直表
【发布时间】:2019-11-18 15:20:11
【问题描述】:

似乎与 AngularJS "Vertical" ng-repeat 的要求相同,但解决方案不适用于 *ngFor

我有这个object array,我正在尝试绑定到一个 HTML 表格。它的格式如下:

[
 {
   "Animal":"Dog",
   "Country":"France",
   "Food":"Tofu",
   "Car":"Nano",
   "Language":"TypeScript"
 }
]

现在可以简单地以默认的 HTML 水平表格方式格式化,如下所示:

<table>
  <tr>
    <th>Animal</th>
    <th>Country</th>
    <th>Food</th>
    <th>Car</th>
    <th>Language</th>
  </tr>
  <tr *ngFor="let data of datas">
    <td>{{data.Animal}}</td>
    <td>{{data.Country}}</td>
    <td>{{data.Food}}</td>
    <td>{{data.Car}}</td>
    <td>{{data.Language}}</td>
  </tr>
</table>

这将创建如下表(请忽略表中的数据;它只是提供一个想法。):

但是我将如何使用动态数据(一种垂直表)创建这样的结构:

【问题讨论】:

  • 也许谷歌“角度垂直表”我看到了很多点击
  • @Avitus 似乎正是我的要求。但不适用于 Angular 2 ngFor。引发错误。

标签: html css angular


【解决方案1】:

在组件中:

this.arrayOfKeys = Object.keys(this.datas[0]);

html:

<table>
    <tr *ngFor="let key of arrayOfKeys">
        <th>{{key}}</th>
        <td *ngFor="let data of datas">
            {{data[key]}}
        </td>
    </tr>
</table>

【讨论】:

  • 使用ng-container的任何具体原因?
【解决方案2】:

如果您的数据结构类似于groups[].items[].name,请使用ng-container

所以,如果你想添加行

<table>
    <ng-container *ngFor="let group of groups">
        <tr>
            <td>{{group.name}}</td>
        </tr>
        <tr *ngFor="let item of group.items">
            <td>{{item.name}}</td>
        </tr>
    </ng-container>
</table>

来源:https://stackoverflow.com/a/44086855/1840185

【讨论】:

  • 考虑我的场景,我有 2 个来自服务调用的列表,一个列表将用作表格标题,另一个列表将用作表格数据。像这样 --- 列表 1 - {Name, Age} 列表 2 - {Shubham, 25} 表格应该看起来像 - Name Shubham 年龄 25 有人可以帮忙吗?
  • 所以,您有一个描述结构的列表和另一个包含数据的列表。我会在上面提供的示例上方的 for 循环中创建一个列表 schema[].names[]
  • 当然,请创建代表您的问题的最小示例,我愿意调查。
  • 嗨维克多,让它工作。非常感谢:):):)
猜你喜欢
  • 1970-01-01
  • 2017-07-20
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 2015-04-05
相关资源
最近更新 更多