Выделите строку таблицы при нажатии в угловой

#angular #datatable

Вопрос:

 <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" -->
                    
                    
                    <!-- User image  -->
                    <ng-container matColumnDef="imageUrl" class="blue">
                      <th mat-header-cell *matHeaderCellDef></th>
                      <td mat-cell *matCellDef="let element"> <img class="avatar" [src]="element.imageUrl" /> </td>
                    </ng-container>

                    <!-- Position Column -->
                    <ng-container matColumnDef="position">
                      <th mat-header-cell *matHeaderCellDef> User ID </th>
                      <td mat-cell *matCellDef="let element"> {{element.position}} </td>
                    </ng-container>
                  
                    <!-- Name Column -->
                    <ng-container matColumnDef="name">
                      <th mat-header-cell *matHeaderCellDef> Name </th>
                      <td mat-cell *matCellDef="let element"> {{element.name}} </td>
                    </ng-container>
                  
                    <!-- Weight Column -->
                    <ng-container matColumnDef="weight">
                      <th mat-header-cell *matHeaderCellDef> Delivery Email </th>
                      <td mat-cell *matCellDef="let element"> {{element.weight}} </td>
                    </ng-container>
                  
                    <!-- Symbol Column -->
                    <ng-container matColumnDef="symbol">
                      <th mat-header-cell *matHeaderCellDef> Status </th>
                      <td mat-cell *matCellDef="let element"> {{element.symbol}} </td>
                    </ng-container>
                  
                    <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
                    <tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="clickEvent()" [class.blue]="classToggled"></tr>
                  </table>
 
 clickEvent(){
    this.showAction = !this.showAction;  
    this.classToggled = !this.classToggled; 
  } 
 

Это таблица, которую я пытался переключить, но она меняется во всех строках..
Мне нужно выделить только ту строку, на которую я нажимаю, и когда я нажимаю другую строку, она должна удалить выделение из предыдущей строки и выделить новую

Ответ №1:

Если только выделить случай элемента с одной строкой:

 <tr mat-row *matRowDef="let row; columns: displayedColumns;let index = index" (click)="clickEvent(index)" [class.blue]="index == cindex"></tr>

cindex: number
clickEvent(index) {
    this.cindex = index
}
 

Комментарии:

1. у вас есть ошибка типа, это [class.clue]=»индекс == cindex» (два = ), кроме того, вы можете писать непосредственно в .html (click)="cindex=index"