Search code examples
angularprimengprimeng-table

First column repeating in both froze & unfroze table in Primeng table


I am working on one project where I used PrimeNg table with froze & unfroze column property and its working fine in normal column creating with *NgFor but if I add new column without *NgFor its repeating in both froze & unfroze table.

How to overcome this issue as I want that column only on froze column not on unfroze column.

My Code:

<ng-template pTemplate="header" let-columns>
    <tr>
      <th>All</th>
      <th *ngFor="let col of columns">
        {{col.header}}
      </th>
    </tr>
  </ng-template>
  <ng-template pTemplate="body" let-rowData let-columns="columns">
    <tr>
      <td>
                <p-tableCheckbox
                  [value]="rowData"
                  [attr.disabled]="
                    rowData.setupType === 'No Action' &&
                    rowData.currentStatus === 'INACTIVE'
                      ? 'disabled'
                      : null
                  "
                ></p-tableCheckbox>
              </td>
      <td *ngFor="let col of columns">
        {{rowData[col.field]}}
      </td>
    </tr>
  </ng-template>

Column repeat Issue:

enter image description here

How to overcome this issue ?

Guide me if its possible in PrimeNg table.


Solution

  • You need to use template frozenheader

    <ng-template pTemplate="frozenheader" let-columns>
            <tr>
                <th>All</th>
                <th *ngFor="let col of columns">
                    {{col.header}}
                </th>
            </tr>
        </ng-template>
    

    and frozenbody

    <ng-template pTemplate="frozenbody" let-rowData let-columns="columns">
            <tr>
                <td style="text-align: center">
                    <p-tableCheckbox [value]="rowData" [attr.disabled]="
                        rowData.setupType === 'No Action' &&
                        rowData.currentStatus === 'INACTIVE'
                          ? 'disabled'
                          : null
                      "></p-tableCheckbox>
                </td>
                <td *ngFor="let col of columns">
                    {{ rowData[col.field] }}
                </td>
            </tr>
        </ng-template>
    

    Demo here