web-dev-qa-db-ja.com

AngularテーブルインデックスはmultiTemplateDataRowsディレクティブで定義されていません

テーブルインデックスを表示するのに問題があります。表の例を次に示します。

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

    <!--Column definitions-->        
    <ng-container matColumnDef="{{columnProp.name}}" *ngFor="let columnProp of columnProps; let i = index;">
        <mat-header-cell *matHeaderCellDef mat-sort-header>
            {{columnProp.name}} {{i}}
        </mat-header-cell>

        <mat-cell *matCellDef="let element; let j = index;">
            <div>{{element[columnProp.name}} {{j}}</div>
        </mat-cell>
    </ng-container>

    <!--Row definitions-->
    <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>

    <!-- Row content-->
    <mat-row
        *matRowDef="let row; columns: displayedColumns; let k = index;"
        matRipple
        (click)="this.expandRow(row, k)">
    </mat-row>

    <!--Expanded row content-->
    <mat-row
        *matRowDef="let row; columns: ['expandedContent'];"
        [@detailExpand]="row == expandedElement ? 'expanded' : 'collapsed'">
    </mat-row>
</mat-table>

列インデックスijは期待どおりに表示されますが、行をクリックすると、インデックスkが未定義として表示されます。私はここで何が間違っているのですか?

9
TabsNotSpaces

multiTemplateDataRowsには、dataIndexと呼ばれる行のインデックスを保持するための別の変数があります。 let k = dataIndexを使用して行のインデックスにアクセスします。

関連するgithubの問題

12
TabsNotSpaces