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

142
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 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