1. ホーム
  2. javascript

[解決済み] 角材テーブルのインデックスを定義する方法

2023-07-19 10:42:53

質問

angular materialテーブルを使用する場合、ngForは使用されませんので、どのようにインデックス変数を定義すればよいですか?

ドキュメントで検索してみましたが、indexはどこにも記載されていません。

  <mat-table #table [dataSource]="dataSource">

    <!--- 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">
      <mat-header-cell *matHeaderCellDef> No. </mat-header-cell>
      <mat-cell *matCellDef="let element"> {{element.position}} </mat-cell>
    </ng-container>

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

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

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

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

このテーブルで使用した配列のインデックス変数を定義して、テーブル自体にインデックス値をバインドできるようにするには、どこで、どのようにすればよいのでしょうか。

どのように解決するのですか?

あなたは indexlet element; let i = index;" と同じように *ngFor ?

<mat-row *matRowDef="let row; columns: displayedColumns; let i = index"></mat-row>

とか、こんな感じ。

<ng-container matColumnDef="index">
  <mat-header-cell *matHeaderCellDef> Index </mat-header-cell>
  <mat-cell *matCellDef="let element; let i = index;">{{i}}</mat-cell>
</ng-container>

作業例です。 https://stackblitz.com/edit/angular-acdxje?file=app/table-basic-example.html