Angular 7 - Expandir ou recolher Divs em um loop For

Jake

Eu tenho vários cartões em um loop For. Em cada cartão, gostaria de mostrar e ocultar o conteúdo dentro do cartão usando um link ou um botão. Não tenho IDs exclusivos para atribuir a cada div que desejo alternar. Existe uma maneira de fazer isso?

O código a seguir expande ou reduz o conteúdo do primeiro cartão apenas, mesmo se qualquer botão "Expandir" ou "Recolher" for clicado em qualquer cartão.

<div *ngFor="let result of results">
    <div class="clr-col-lg-12 clr-col-12">
        <div class="card">
            <div class="card-block">
                <div *ngIf="result?.name">
                    <h3 class="card-title">{{result.name}}</h3>
                </div>

                <div class="expandCollapse">
                    <button (click)="toggle($event)">
                        {{buttonName}}
                    </button>
                </div>
                <div class="expandCollapseContent" *ngIf="showRuleContent">
                    <div *ngIf="result?.cTag">
                        <h5>C Tag</h5>{{result.cTag}}
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Componente

public showRuleContent:boolean = false;
public buttonName:any = 'Expand';

toggle($event) {
  this.showRuleContent = !this.showRuleContent;

  // CHANGE THE NAME OF THE BUTTON.
  if(this.showRuleContent)  
    this.buttonName = "Collapse";
  else
    this.buttonName = "Expand";
}
Pranav C Balan

Você pode usar uma matriz que mantém o estado visível de cada elemento em vez de uma única variável.

Modelo

<div *ngFor="let result of results;let i = index">
    <div class="clr-col-lg-12 clr-col-12">
        <div class="card">
            <div class="card-block">
                <div *ngIf="result?.name">
                    <h3 class="card-title">{{result.name}}</h3>
                </div>

                <div class="expandCollapse">
                    <button (click)="toggle(i)">
                        {{hideRuleContent[i] ? 'Expand' : 'Collapse'}}
                    </button>
                </div>
                <div class="expandCollapseContent" *ngIf="!hideRuleContent[i]">
                    <div *ngIf="result?.cTag">
                        <h5>C Tag</h5>{{result.cTag}}
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Componente

public hideRuleContent:boolean[] = [];
public buttonName:any = 'Expand';

toggle(index) {
  // toggle based on index
  this.hideRuleContent[index] = !this.hideRuleContent[index];
}

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

recolher / expandir animação em Angular

Expandir e recolher Divs no React

Expandir / recolher a árvore de materiais usando dados booleanos (Angular 7)

Expandir / recolher a árvore de materiais usando dados booleanos (Angular 7)

Como você alterna uma caixa de seleção em um Kendo UI PanelBar que pode expandir ou recolher?

Expandir / recolher itens da lista no menu em árvore recursiva no angular

Angular 5 expandir / recolher lista

Como expandir e recolher divs um após um se clicado

API do Planilhas Google - expandir ou recolher um grupo aciona um evento?

expandir ou recolher colunas agrupadas em planilhas do Google usando código

Recolher / expandir simples usando jquery dentro de um loop php foreach

reage expandir e recolher apenas um painel

Como fazer um widget expandir/recolher no flutter?

Escondendo o ícone Expandir / Recolher em TreeView

Expandir / recolher a seção em UITableView no iOS

Expandir / recolher colunas em folhas protegidas

Recolher / Expandir div aninhado no Angular 6

Como expandir / recolher a guia sanfonada ao clicar em um botão?

Como recolher / expandir todos os blocos de comentários em um arquivo no PhpStorm?

Expandir e recolher a linha filha ao clicar em um link na linha pai de uma tabela

clique em um botão expandir e recolher eclipse de pepino com selênio

Como expandir / recolher uma visualização em árvore recursiva no Angular 2?

Usando JS para expandir / recolher divs com perguntas frequentes

Desative a atualização da tela ao recolher ou expandir todos os tréenodos em uma visualização em árvore

Evento a ser chamado depois de expandir ou recolher uma visualização em árvore de kendo do nó

CoordinatorLayout Recolher ou Expandir AppBar na extremidade da rolagem

Expandir / recolher elementos pais usando javascript ou jquery?

Como expandir / recolher em um título parcial ao usar o acordeão semantic-ui-react

Expandir / recolher campos que são gerados em um ngFor usando uma função de alternância?

TOP lista

quentelabel

Arquivo