Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

372
Vistas
Show more / show less text, but hide option if text does not overflow (Angular)

I am working with dynamic components, where the data being shown in the template is unknown and will vary from case to case. I have some nested mat-expansion-panels, where there is a need to display a text field for notes that have previously been stored in each expansion panel being loaded.

Since the length of the text is unknown, I want to limit the displayed note to one line, and mark that text have been overflowed with an ellipsis - followed by a "Show more" / "Show less" button. I have the show more/less functionality working, but I only want this button to be visible if the text exceeds one line, and be hidden if the note i.e., only contains three words.

I have seen JQuery often being used to accomplish around similar issues, but being that I'm using Angular, JQuery is not a suitable fit.

Template:

<div class="note-field">
   <span class="note">Note: </span>
   <span class="note-text" [class.show]="show">{{ data.note }}</span>
</div>
<button class="show-button" (click)="show = !show">{{ show ? 'Show less': 'Show more' }}</button>

Component:

show: boolean = false;

CSS:

.note-text {
   font-size: 14px;
   line-height: 14px;
   height: 14px;
   overflow: hidden;
   text-overflow: ellipsis;
}

.show {
   overflow: visible;
   text-overflow: none;
   height: auto;
}

I've been looking at this for some days now, and one of the fixes that I unsuccessfully tried was adding the following CSS specification:

.show-button[overflow=visible] {
   display: none;
}

The ellipsis also stopped working after implementing the overflow functionality.

I know it is somewhat specific, but I really need the functionality to hide and show this only if the data being loaded is over the specified limit.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

the only is create a template reference variable e.g. called content (see the #content in the code) and "ask" about content.scrollHeight

<span #content [class.note-text]="content.scrollHeight>15" 
               [class.show]="show">{{ data.note }}</span>
</div>
<button *ngIf="content.scrollHeight>15" class="show-button"
         (click)="show = !show">{{ show ? 'Show less': 'Show more' }}</button>

See that if content.scrollHeigth>15, the "span" has the class "note-text" and the button is visible

a fool stackblitz

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda