Saltar al contenido

Alinee a la derecha una celda de encabezado de tapete en una tabla de material angular con encabezados de clasificación

Solución:

La alineación de la celda se realiza de forma predeterminada a través de flexbox cuando se usa <mat-header-cell> y <mat-cell>, pero no cuando usas <th mat-header-cell> y <td mat-cell>. Cuando se utilizan los elementos de la tabla, la alineación se realiza con text-align. Si fuerza flexbox todo el tiempo, las celdas de la tabla que usan th y td tienen la posibilidad de perder la alineación vertical con el resto de la mesa.

Encontré que una combinación de escenarios text-align: right y ambientación justify-content: flex-end funciona mejor. De esa forma, elementos con display:table-cell usar text-align, y elementos con display:flex usar justify-content.

Por tu ejemplo:

.header-align-right {
  text-align: right;
  justify-content: flex-end;
}

Para que la flecha aparezca antes del encabezado, debe usar el arrowPosition atributo.

Además, sugeriría usar la clase de columna agregada automáticamente (.mat-column- + valor sensible a mayúsculas y minúsculas de matColumnDef) en lugar de agregar class="header-align-right". Eso alineará los encabezados, celdas y pies de página. Así que esto es lo que sugeriría:

.mat-column-Number {
  text-align: right;
  justify-content: flex-end;
}
<ng-container matColumnDef="Number">
  <th mat-header-cell *matHeaderCellDef mat-sort-header arrowPosition="before">Number</th>
  <td mat-cell *matCellDef="let row">{{row.Number}}</td>
  <td mat-footer-cell *matFooterCellDef></td>
</ng-conIainer>

Demo en vivo

.header-align-right{
  display: flex;
  padding: 21px 0;
  justify-content: flex-end;
}

copia y pega este código en tu css

:host ::ng-deep .mat-sort-header-container { 
    display: flex;  
    justify-content: center; 
}

th.mat-header-cell, td.mat-cell { 
    text-align: center; 
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *