bugfix> javascript > 投稿

PrimeNGのドキュメントによると、テーブル内の行展開用に2つのプロパティがあります。 onRowExpandおよびonRowCollapse。クリックして展開した現在の行の背景色を変更したい。

私のhtml:

<p-table [columns]="cols" [value]="cars" dataKey="vin" expandableRows="true" styleClass="x-expandable-row"
(onRowExpand)="onRowExpandCallback($event)" (onRowCollapse)="onRowCollapseCallback($event)">
   <ng-template pTemplate="header">
      <tr>
          <th style="width: 2.25em"></th>
          <th>Make</th>
          <th>Model</th>
          <th>Color</th>
      </tr>
    </ng-template>
<ng-template pTemplate="body" let-car let-expanded="expanded">
   <tr>
       <td class="x-expand-handeler-row" >
          <a href="#" [pRowToggler]="car">
             <i [ngClass]="expanded ? 'fas fa-minus' : 'fas fa-plus'"></i>
          </a>                                    
       </td>
       <td>{{car.make}}</td>
       <td>{{car.model}}</td>
       <td>{{car.color}}</td>
    </tr>
 </ng-template>
 <ng-template pTemplate="rowexpansion" let-car>
    <td [attr.colspan]="4" class="x-expanded-row">                                                                                          
        <label>Row Details Go Here</label>
    </td>                                                           
 </ng-template>
</p-table>

私のtsファイル:

onRowExpandCallback(e) {
    //need to find the best way to add and remove a class on expanded row
    e.originalEvent.currentTarget.parentElement.parentElement.parentElement.parentElement.bgColor = "#edf6fa";
  }
  onRowCollapseCallback(e) {
    //need to find the best way to add and remove a class on expanded row
    e.originalEvent.currentTarget.parentElement.parentElement.bgColor = '#fff';
  }

追加した「parentElements」で遊んでいますが、運がありませんでした。 2つのparentElementのみを使用して、PrimeNGデータテーブルで動作するコードがあります。

回答 1 件
  • コード内で「拡張」されたローカル変数を使用していることに気付いた場合、次のようにアイコンを切り替える方法のようにクラスを簡単に切り替えることができます。

    <i [ngClass]="expanded ? 'fas fa-minus' : 'fas fa-plus'"></i>
    
    

    onRowExpandおよびonRowCollapseイベントを処理する必要はありません

    trタグに[ngClass] = "expanded? 'edf6faClass': 'fffClass'"を追加します

    <p-table [columns]="cols" [value]="cars" dataKey="vin" expandableRows="true" styleClass="x-expandable-row" (onRowExpand)="onRowExpandCallback($event)" (onRowCollapse)="onRowCollapseCallback($event)">
      <ng-template pTemplate="header">
        <tr>
          <th style="width: 2.25em"></th>
          <th>Make</th>
          <th>Model</th>
          <th>Color</th>
        </tr>
      </ng-template>
      <ng-template pTemplate="body" let-car let-expanded="expanded">
        <tr [ngClass]="expanded ? 'edf6faClass' : 'fffClass'">
          <td class="x-expand-handeler-row">
            <a href="#" [pRowToggler]="car">
              <i [ngClass]="expanded ? 'fas fa-minus' : 'fas fa-plus'"></i>
            </a>
          </td>
          <td>{{car.make}}</td>
          <td>{{car.model}}</td>
          <td>{{car.color}}</td>
        </tr>
      </ng-template>
      <ng-template pTemplate="rowexpansion" let-car>
        <td [attr.colspan]="4" class="x-expanded-row">
          <label>Row Details Go Here</label>
        </td>
      </ng-template>
    </p-table>
    
    

あなたの答え