angularangular-materialangular-material-6

Angular 6 Material Table Sticky Header doesn't work


I need to make the Header of the mat-table component fixed to the top, But It doesn't work.

I have Angular v6.1.7 and @angular/material v6.4.7.

I added the "sticky: true" propertie to the matHeaderRowDef as someone mentions here but it doesn't do anything :(

<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>

I have this example project: https://stackblitz.com/edit/angular-wem2qa

This is my imports on the TS file:

import { Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from "@angular/core";
import { MatDialog, MatExpansionPanel, MatSnackBar, MatSort, MatTableDataSource, Sort } from "@angular/material";

Solution

  • Your problem may be not the sticky row itself. You need to add a container around your table to make sure a row can be sticky at top with these styles for example:

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

    See example on Angular Material documentation: https://material.angular.io/components/table/overview#sticky-rows-and-columns and also check the CSS-tab.