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

141
Visualizações
Expandir/contraer todos los acordeones

Estoy tratando de crear un acordeón, donde puede hacer clic en cada acordeón, pero también me gustaría tener otro botón donde un clic expanda o contraiga todos los acordeones.

Así que ahora mismo tengo este componente .ts :

 import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-faq', templateUrl: './faq.component.html', styleUrls: ['./faq.component.scss'], }) export class FaqComponent implements OnInit { accordion1: boolean; accordion2: boolean; accordion3: boolean; accordionAll: boolean; constructor() { } ngOnInit() { } }

Ahora, cada acordeón es solo un poco de CSS, y luego puedo activar cada uno con:

 <div class="accordion-header" (click)="accordion1 = !accordion1" [ngClass]="accordion1 ? 'is-active' : ''">Accordion 1</div>

Y luego puedo darle un poco de estilo y activar algún contenido de acordeón con ese estado particular de accordion1 .

Para expandir/contraer todo, actualmente tengo algo como esto:

 <div *ngIf="!accordionAll" (click)="accordion1 = true; accordion2 = true; accordion3 = true; accordionAll = true"></div> <div *ngIf="accordionAll" (click)="accordion1 = false; accordion2 = false; accordion3 = false; accordionAll = false"></div>

Ahora, en cierto sentido esto funciona. Pero si de repente tengo 20 acordeones diferentes, esto será horrendo. Además, no me gusta que necesito tener dos divs, ya que algún tipo de animación (por ejemplo, un icono) no funciona tan bien de esta manera.

Entonces mi pregunta es: ¿Cómo hago esto de la manera "correcta", donde no se complica con muchos acordeones, y donde realmente puedo expandir/contraer todo con un solo botón?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Como ya está rastreando el estado de accordionAll , no necesita pasar un valor booleano a un método.

 <div (click)="toggleAll()"></div>

 toggleAll(): void { this.accordionAll = !this.accordionAll this.accordion1 = this.accordionAll; this.accordion2 = this.accordionAll; this.accordion3 = this.accordionAll }

about 4 years ago · Juan Pablo Isaza Relatório

0

Creo que algo como esto va a funcionar.

 import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-faq', templateUrl: './faq.component.html', styleUrls: ['./faq.component.scss'], }) export class FaqComponent implements OnInit { accordion1: boolean; accordion2: boolean; accordion3: boolean; accordionAll: boolean; constructor() { } ngOnInit() { } toogleAll() { this.accordion1 = this.accordionAll; this.accordion2 = this.accordionAll; this.accordion3 = this.accordionAll; this.accordionAll = !this.accordionAll; } }
 <div *ngIf="!accordionAll" (click)="toogleAll()"></div> <div *ngIf="accordionAll" (click)="toogleAll()"></div>
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