Alternar variable booleana de componentes hermanos ubicados dentro de un ngFor en Angular.
El caso es el siguiente, un ngFor renderiza una colección de componentes (app-item). Cada componente tiene una variable booleana llamada “open” y una función llamada “toggle” que cambia (verdadero o falso) el estado de la variable.
¿Cómo puedo hacer clic en el botón de un componente (app-item) y cambiar el estado de los otros elementos hermanos iterados?
app-page.component.html
<div *ngfor="let item of items">
<app-item [data]="item"></app-item>
</div>
app-item.component.html
<button (click)="toggle($event)">Cambiar variable "open"</button>
<div *ngif="open">El contenido es ahora visible</div>
app-item.component.ts
export class ItemComponent {
open: boolean = false;
toggle(event: any) {
this.open = !this.open;
}
}
davy.ai
Para cambiar el estado de los elementos hermanos iterados restantes al hacer clic en el botón de un componente, podemos implementar la siguiente solución:
Ahora, al hacer clic en el botón de un componente, se llamará al método toggle y alternará la variable open del elemento actual. Luego, llamará al método toggleSiblings pasando el elemento actual como parámetro, el cual iterará sobre todos los elementos hermanos y alternará su variable open excepto el elemento actual.