MatTabGroup no muestra de manera confiable los botones de paginación.
Tengo un problema con el componente de pestañas de Angular Material. Estoy tratando de usar MatTabGroup con varias pestañas en él. El problema es que, cuando se crea mi componente, los botones de paginación no se muestran, aunque las pestañas existentes ocupan más espacio del disponible.
Ver la siguiente captura de pantalla:
Ahora, en la mayoría de los casos, si aumento y disminuyo el nivel de zoom del navegador, los botones aparecen de repente, como se ve aquí:
El contenido de ese grupo de pestañas se crea de la siguiente manera:
<mat-tab-group>
<mat-tab *ngFor="let thing of things"
label="{{'thing.name'}}">
<ng-template matTabContent>
<custom-component [thing]="thing"></custom-component>
</ng-template>
</mat-tab>
</mat-tab-group>
Lo que noté es que siempre hay dos contenedores con la clase .mat-tab-header-pagination
en el DOM, uno para cada uno de los botones de paginación. Ambos tienen display: none
. De alguna manera, el mecanismo que establece la propiedad display: flex
no funciona de manera confiable.
¿Alguien puede decirme cuál podría ser el problema? ¿Puede que active manualmente la reevaluación de si los botones deben mostrarse o no?
¡Gracias por tu ayuda!
davy.ai
Parece que el problema está en la representación inicial de MatTabGroup. Los botones de paginación no se muestran incluso cuando hay más pestañas que espacio disponible. Sin embargo, cuando se cambia el nivel de zoom del navegador, los botones se muestran repentinamente.
Una cosa que podría estar causando esto es el momento en que se crea MatTabGroup y se representa su contenido. Es posible que el cálculo de la visibilidad de los botones de paginación no se esté realizando correctamente porque aún no se ha cargado todo por completo.
Para activar manualmente una reevaluación de la visibilidad de los botones, podrías intentar usar ViewChild para obtener una referencia a MatTabGroup y luego llamar a su método
realignInkBar()
. Esto debería recalcular los botones de paginación y mostrarlos si es necesario.Por ejemplo, en el archivo TypeScript de tu componente, podrías agregar:
Esto garantizará que los botones de paginación se muestren correctamente siempre, independientemente de la representación inicial de MatTabGroup.