I'm looking for a good way to highlight the whole a row in md-table.
Should I do directive or what?

<div class="example-container mat-elevation-z8">
  <md-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" -->

    <!-- ID Column -->
    <ng-container cdkColumnDef="userId">
      <md-header-cell *cdkHeaderCellDef> ID </md-header-cell>
      <md-cell *cdkCellDef="let row"> {{row.id}} </md-cell>
    </ng-container>

    <!-- Progress Column -->
    <ng-container cdkColumnDef="progress">
      <md-header-cell *cdkHeaderCellDef> Progress </md-header-cell>
      <md-cell *cdkCellDef="let row"> {{row.progress}}% </md-cell>
    </ng-container>

    <!-- Name Column -->
    <ng-container cdkColumnDef="userName">
      <md-header-cell *cdkHeaderCellDef> Name </md-header-cell>
      <md-cell *cdkCellDef="let row"> {{row.name}} </md-cell>
    </ng-container>

    <!-- Color Column -->
    <ng-container cdkColumnDef="color">
      <md-header-cell *cdkHeaderCellDef>Color</md-header-cell>
      <md-cell *cdkCellDef="let row" [style.color]="row.color"> {{row.color}} </md-cell>
    </ng-container>

    <md-header-row *cdkHeaderRowDef="displayedColumns"></md-header-row>
    <md-row *cdkRowDef="let row; columns: displayedColumns;"></md-row>
  </md-table>
</div>

表起:https://material.angular.io/components/table/overview

推荐答案

Update for Newer Material Version (md --> mat):

html:

<!-- Add the highlight class in row definiton of md-table -->
<!-- Add click event to pass the selected row index -->

<mat-row *cdkRowDef="let row; columns: displayedColumns;" 
         [ngClass]="{'highlight': selectedRowIndex == row.id}"
         (click)="highlight(row)">
</mat-row>

Original Answer:

你可以使用ngClassselectedRowIndex这样的标志来实现.只要单击的行索引等于selectedRowIndex,就会应用该类.

Plunker demo

html:

<!-- Add the highlight class in row definiton of md-table -->
<!-- Add click event to pass the selected row index -->

<md-row *cdkRowDef="let row; columns: displayedColumns;" 
         [ngClass]="{'highlight': selectedRowIndex == row.id}"
         (click)="highlight(row)">
</md-row>

CSS:

.highlight{
  background: #42A948; /* green */
}

ts:

selectedRowIndex = -1;

highlight(row){
    this.selectedRowIndex = row.id;
}

Angular相关问答推荐

未在ng bootstrap 模式中设置表单输入

更改物料设计中的复选框勾选 colored颜色

如何从URL中角下载图片?

使用BLOB数据类型时,HTTPCLIENT中可能存在错误

Angular Mat Select 显示键盘焦点和鼠标悬停焦点的问题

具有两个订阅方法的 Angular 16 takeUntilDestroyed 运算符

Angular AuthGuard:不推荐使用 CanActivate 和 CanActivateChild.如何更换它们?

Angular 在关闭另一个对话框后打开另一个对话框的最佳做法是什么?

Angular 重新渲染仅使用ngrx在表中更改的行

Angular:如何在根组件中使用 ngx-translate?

如何在Cypress 测试中切换 Angular 选项卡

如何以Angular 2 获取当前路由自定义数据?

如何重新加载当前页面?

运行 npm 测试(Angular 2 单元测试)后无法读取未定义的属性 subscribe

Angular 2: Debounce(ngModelChange)?

由router-outlet 创建时如何将css类应用于组件元素?

移除 Angular 组件创建的宿主 HTML 元素 Select 器

Angular 2:为什么在检索路由参数时使用 switchMap?

为什么 *ngIf 不适用于 ng-template?

路由 getCurrentNavigation 始终返回 null