Pravu
Pravu

Reputation: 608

Angular material table with sticky header

I'm using angular7 with Angular material design templates. Currently, my result is as follows, enter image description here

But I want my result is as follows. Scrollbar under sticky header.

enter image description here

I put some demo code and live demo as your reference.

HTML

<div class="example-container mat-elevation-z8">
  <table mat-table [dataSource]="dataSource">

    <!-- Position Column -->
    <ng-container matColumnDef="position">
      <th mat-header-cell *matHeaderCellDef> No. </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> Weight </th>
      <td mat-cell *matCellDef="let element"> {{element.weight}} </td>
    </ng-container>

    <!-- Symbol Column -->
    <ng-container matColumnDef="symbol">
      <th mat-header-cell *matHeaderCellDef> Symbol </th>
      <td mat-cell *matCellDef="let element"> {{element.symbol}} </td>
    </ng-container>

    <tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
    <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
  </table>
</div>

CSS

.example-container {
  height: 400px;
  overflow: auto;
}

table {
  width: 100%;
}

Upvotes: 0

Views: 9188

Answers (1)

akpgp
akpgp

Reputation: 831

You can do something like that using two table one for the header and another for the data. Please see the working demo.

Upvotes: 1

Related Questions