【问题标题】:How to apply some style to the table row in angular material table如何对角材料表中的表格行应用一些样式
【发布时间】:2020-02-10 17:01:15
【问题描述】:

我有这张桌子:

    <div class="table-container">
    <table mat-table [dataSource]="dataSource">
        <mat-divider></mat-divider>

        <!-- title column -->
        <ng-container matColumnDef="title">
            <th mat-header-cell *matHeaderCellDef> {{ 'NOTIFYCATION.NOTIFY_TITLE' | translate }} </th>
            <td mat-cell *matCellDef="let element"> {{element.title}} </td>
        </ng-container>

        <!-- code column -->
        <ng-container matColumnDef="description">
            <th mat-header-cell *matHeaderCellDef> {{ 'NOTIFYCATION.DESCRIPTION'  | translate }} </th>
            <td mat-cell *matCellDef="let element"> {{element.description}} </td>
        </ng-container>
        <!-- code column -->
        <ng-container matColumnDef="receiverDisplayName">
            <th mat-header-cell *matHeaderCellDef> {{ 'NOTIFYCATION.RECEIVER_DISPLAY_NAME'| translate }} </th>
            <td mat-cell *matCellDef="let element"> {{element.receiverDisplayName}} </td>
        </ng-container>
        <!-- code column -->
        <ng-container matColumnDef="type">
            <th mat-header-cell *matHeaderCellDef> {{ 'NOTIFYCATION.TYPE'| translate }} </th>
            <td mat-cell *matCellDef="let element"> {{element.type}} </td>
        </ng-container>
        <ng-container matColumnDef="createdOnUtc">
            <th mat-header-cell *matHeaderCellDef> {{ 'USER_SUBSCRIBE.createdOnUtc' | translate }} </th>
            <td mat-cell *matCellDef="let element">
                <span *ngIf="lang=='fa'">{{ element.createdOnUtc | jalali }}</span>
                <span *ngIf="lang!='fa'"> {{element.createdOnUtc | date: 'dd/MM/yyyy hh:mm'}} </span>
            </td>
        </ng-container>

        <!-- actions -->
        <ng-container style="color: red;" matColumnDef="actions">
            <th mat-header-cell *matHeaderCellDef>
                {{ 'GENERAL.ACTIONS' | translate }}
            </th>
            <td mat-cell *matCellDef="let row; let i=index;">
                <a mat-icon-button [matTooltip]="'TOOLTIP.DETAIL' | translate">
                    <mat-icon aria-label="Show" (click)="showDetail(row)" class="ic-defualt">remove_red_eye
                    </mat-icon>
                </a>
                <button mat-icon-button [matTooltip]="'TOOLTIP.DELETE' | translate" color="accent" uaccess
                    [permission]="':GiftCode:Delete'" (click)="delete(row.id)">
                    <mat-icon aria-label="Delete">delete</mat-icon>
                </button>
            </td>
        </ng-container>



        <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
        <tr *matCellDef="let row; let element" [ngClass]="{'highlight': element.isSeen ==='true'}">
            {{element.bestRider}} </tr>
        <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
    </table>
    <mat-progress-bar *ngIf="dataSource.loading$ | async" mode="indeterminate"></mat-progress-bar>
    <mat-paginator [length]="dataSource.length$ | async" [pageSize]="pageSize" [pageSizeOptions]="pageSizeOptions"
        showFirstLastButtons></mat-paginator>

</div>

isSeen=false 时,我需要将tr 的颜色更改为red

我试试这个:

<tr *matCellDef="let row; let element" [ngClass]="{'highlight': element.isSeen ==='true'}"></tr>

CSS:

 .highlight{
    color: white;
    background: #673AB7;
  }

但它不起作用。

有什么问题?我该如何解决这个问题?

【问题讨论】:

    标签: javascript angular typescript angular-material


    【解决方案1】:

    您的最后一个 mat-h​​eader-row 缺少一些代码并使用包含当前迭代行的 row.isSeen

    <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
    <tr mat-row *matRowDef="let row; columns: displayedColumns;" [ngClass]="{'highlight': row.isSeen }"></tr>
    

    用上面的代码替换最后一个 mat-h​​eader-row 即可:

    这里是Online_Demo

    【讨论】:

      【解决方案2】:

      你可以试试这个代码:

      HTML:

      <tr *matCellDef="let row; let element" [ngClass]="{'highlight': element.isSeen ==='true'}"></tr>
      

      CSS:

      .highlight {
          background-color: gold
      }
      

      希望对你有帮助!

      【讨论】:

      【解决方案3】:

      我认为这会很完美。

      .highlight {
          color: white;
          background: #673AB7;
      }
      
      .notHighlight {
          color: red;
          background: #252525;
      }
      

      HTML:

      [ngClass]="(element.isSeen === true) ? 'highlight' : 'notHighlight'"
      

      [ngClass]="(element.isSeen) ? 'highlight' : 'notHighlight'"
      

      【讨论】:

      【解决方案4】:

      试试这个:

      <mat-row *matRowDef="let row; columns: displayedColumns;" [ngClass]="{'highlight': row.IsTrue }">
      

      和 CSS:

      .make-gold {
          background-color: gold
      }
      

      例子:

      https://stackblitz.com/edit/angular-mat-highlight-row-on-conditions

      【讨论】:

      【解决方案5】:

      你需要将你的风格移动到style.css。如果它是一个布尔值,也不需要添加“true”

      <tr *matCellDef="let row; let element" [ngClass]="{'highlight': element.isSeen }"></tr>
      

      如果您想将其保留在您的组件中,或者将 ::ng-deep 添加到您的样式中

      ::ng-deep .highlight{
          color: white;
          background: #673AB7;
        }
      

      demo

      【讨论】:

      • @kianoushdortaj 请更具体,而不是说不工作指定确切的问题
      • 我精确到当isSeen===false 行将颜色更改为red 或...。我使用你的代码,但它不起作用
      • @kianoushdortaj 将您的逻辑更改为[ngClass]="{'highlight': !element.isSeen }"
      • 仍然没有连接
      • 在您的演示中最后一个 tr 代码是 &lt;tr mat-row *matCellDef="let row; let element" [ngClass]="{'highlight': !element.isSeen }"&gt;&lt;/tr&gt; 但它应该是 &lt;tr mat-row *matRowDef="let row; columns: displayedColumns;" [ngClass]="{'highlight': !row.isSeen }"&gt;&lt;/tr&gt; stackblitz.com/edit/angular-adntkt-huvjb7
      猜你喜欢
      • 2021-08-24
      • 2020-10-26
      • 2019-04-04
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多