【问题标题】:How to display the table headers in a row, in angular material table?如何在角度材料表中连续显示表头?
【发布时间】:2018-11-28 00:53:01
【问题描述】:

我的材料表以以下方式显示值:

名称|数量

芒果|10

    <div class="table-cover center-table">
      <div class="mat-elevation-z8 elevation-scroll-control">
        <table mat-table class="full-width-table left-margin" [dataSource]="dataSource" matSort aria-label="Elements">

          <!-- Name Column -->
          <ng-container matColumnDef="name">
            <td mat-header-cell *matHeaderCellDef >Name</td>
            <td mat-cell *matCellDef="let row" class="">
              <div class="cell-style padding-left">{{row.Name}}</div>
            </td>
          </ng-container>

          <!-- quantity Column -->
          <ng-container matColumnDef="quantity">
            <td mat-header-cell *matHeaderCellDef>quantity</td>
            <td mat-cell *matCellDef="let row">
              <div class="cell-style">{{row.quantity}}</div>
            </td>
          </ng-container>

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

      </div>      
    </div>

但我想显示如下值:

姓名 |芒果

数量 | 10

我怎样才能做到这一点?非常感谢任何帮助

【问题讨论】:

标签: angular angular-material angular7


【解决方案1】:

你可以这样做:

  1. 将数据从列转移到行:

    Before: Mango |10 Banana|5

    After: Mango|Banana 10|5

  2. 将标签作为数据的第一列:

    Name|Mango|Banana Quantity|10|5

  3. 调整您的表格以动态显示列(以便您可以有任意数量的列),如angular material table documentation 中的此示例:

<table mat-table [dataSource]="data" class="mat-elevation-z8">
  <ng-container [matColumnDef]="column" *ngFor="let column of displayedColumns">
    <th mat-header-cell *matHeaderCellDef> {{column}} </th>
    <td mat-cell *matCellDef="let element"> {{element[column]}} </td>
  </ng-container>

  <tr mat-header-row *matHeaderRowDef="columnsToDisplay"></tr>
  <tr mat-row *matRowDef="let row; columns: columnsToDisplay;"></tr>
</table>
  1. 如果不需要,您可以删除标题行

  2. 如果你想格式化第一列,你可以使用一些 css as:

    td.mat-cell:nth-child(1) { // formatting }

  3. 此外,如果需要,您可以使用 MatColumnDef 的属性 sticky 来保持第一列的粘性(在这种情况下,您可能希望将第一列与动态 *ngFor 循环分开,以便您可以轻松地只有第一列有粘性)

我创建了一个有效的stackblitz example

【讨论】:

  • 感谢您的回复@GCSDC。我尝试了您的解决方案,但仍然没有显示预期的结果。请更改我的代码以便更好地理解。
  • @Rajath 我在我的答案中包含了一个有效的 stackblitz 示例。如果这能解决问题,请告诉我。
  • 非常感谢!还有一个问题——如果我们这样做,那么更新表(数据库)中的数据会变得非常困难,对吧?我们如何解决这个问题。
  • 不确定我是否明白你的意思,但如果你需要初始格式的数据,你可以再次转置。
猜你喜欢
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 2019-10-19
  • 2021-01-11
  • 1970-01-01
相关资源
最近更新 更多