Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

365
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda