【问题标题】:I want to display only single object data in angular material table in a single column我只想在单列中显示角度材料表中的单个对象数据
【发布时间】:2020-10-28 12:58:09
【问题描述】:

我想在单列中使用角度材料表显示单个对象数据。

例如我有一个类似的对象

export interface PeriodicElement {
  name: string;
  position: number;
  weight: number;
  symbol: string;
}

const ELEMENT_DATA: PeriodicElement[] = [
  {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'},
];


displayedColumns = ['name','position','weight','symbol'];

对象中的单个元素

我不想要列名,也不想要数据列

我想要的只是将数据逐行呈现在另一行之下。

如果我有一个数组的第零个索引的对象,我想在角度材料数据表中逐行显示它的所有属性,这怎么可能?

或者可以建议任何其他组件用于角材料以相同的方式显示对象属性..!!

这是我的表格 Html 代码

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

  <!--- Note that these columns can be defined in any order.
        The actual rendered columns are set as a property on the row definition" -->

  <!-- Position Column -->
  <ng-container matColumnDef="position">
    <th mat-header-cell *matHeaderCellDef> No. </th>
    <td mat-cell *matCellDef="let element"> {{element.position}} </td>
  </ng-container>

  <!-- Name Column -->
  <ng-container matColumnDef="name">
    <td mat-cell *matCellDef="let element"> {{element.name}} </td>
  
  </ng-container>

  <!-- Weight Column -->
  <ng-container matColumnDef="weight">
   
    <td mat-cell *matCellDef="let element"> {{element.weight}} </td>
  </ng-container>

  <!-- Symbol Column -->
  <ng-container matColumnDef="symbol">
   
    <td mat-cell *matCellDef="let element"> {{element.symbol}} </td>
  </ng-container>

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

数据的外观必须像

  • 第一行必须显示位置:1
  • 第二行必须显示名称:Hydrogen
  • 第三行必须显示体重:1.0079
  • 第四行必须显示符号:'H'

刚刚在项目符号中提到过,但我希望将所有数据都放在一个列中

这是我执行上述代码的链接

https://stackblitz.com/edit/angular-vbpdqk?embed=1&file=src/app/table-basic-example.html

【问题讨论】:

  • 你的html代码在哪里?
  • 您不想要列名吗?因为通常数组中的数据按行显示,如第 0、第 1、第 2 等等。还是我没有清楚明白你的意思?
  • 想法是仅使用表格而不是标题仅显示数据。
  • 我编辑了这个问题,希望它现在清楚了..!!

标签: javascript angular angular-material angular8


【解决方案1】:

您可以使用 ng-repeat-start 和 ng-repeat-end 看起来像:

<table>
  <tr ng-repeat-start="element in items">
    <td>Position</td>
    <td>{{element.postition}}</td>
  </tr>
  <tr>
    <td>Name</td>
    <td>{{element.name}}</td>
  </tr>
  <tr>
    <td>Weight</td>
    <td>{{element.weight}}</td>
  </tr>
  <tr ng-repeat-end>
    <td>Symbol</td>
    <td>{{element.symbol}}</td>
  </tr>
</table>

您的结果将如下所示:

  • 位置:1
  • 名称:“氢”
  • 体重:1.0079
  • 符号:'H'
  • 位置:2
  • 名称:“氧气”
  • 体重:15.999
  • 符号:'O'

希望对你有帮助。

【讨论】:

  • 谢谢你的回答让我试试这个我找到了一个最佳解决方案..!!
  • 它是一个简单的 Html 表格,您可以在材料主题中解决吗?我刚刚添加了一个答案,但我仍在寻找更好的方法..!!
  • 您好,您是否可以制作一个codepen,以便我们能够对其进行测试并为您提供更好的解决方案。
  • 这里是您可以根据需要更改 html 的链接
【解决方案2】:

我只是通过在定义中只需要制作 tr 而不是 td 来解决这个问题

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

  <!-- Position Column -->
  <ng-container matColumnDef="position">
   <tr mat-cell *matCellDef="let element"> Position : {{element.position}} </tr>
  </ng-container>

  <!-- Name Column -->
  <ng-container matColumnDef="name">
    <tr mat-cell *matCellDef="let element"> Name:{{element.name}} </tr>
  </ng-container>

  <!-- Weight Column -->
  <ng-container matColumnDef="weight">
   <tr mat-cell *matCellDef="let element">Symbol: {{element.symbol}} </tr>
  </ng-container>

  <!-- Symbol Column -->
  <ng-container matColumnDef="symbol">
    <tr mat-cell *matCellDef="let element">Weight : {{element.weight}} </tr>
  </ng-container>

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

对于 Additional 我们可以为每个单元格边框底部添加边框,甚至为奇数行添加我们想要的偶数行阴影..!!

【讨论】:

    【解决方案3】:

    在您的 ts 文件中,您需要定义

    displayedColumns = ['name','position','weight','symbol'];

    建议 - 不要使用表格,而是使用下面的内容来打印值

    <div *ngFor='let row of ELEMENT_DATA'>
      <ul>
        <li *ngFor='let obj of row | keyvalue'>{{obj.key}}:{{key.value}} </li>
       </ul>
    </div>
    

    【讨论】:

    • 我只想要一列显示数据低于另一列..!!
    • @kushalBaldev,你想要一栏?? name row 1 row2 是你想要的吗?
    • 第二行呢?那么
    • 第一行显示位置:1 第二行显示名称:'Hydrogen' 第三行显示重量:1.0079 第四行显示符号:'H'
    • 我再次编辑了这个问题希望它说清楚..!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    相关资源
    最近更新 更多