Как открыть div внутри одной карты при нажатии кнопки, которая находится в цикле

#angular8

#angular8

Вопрос:

У меня есть карта с циклом ngFor, поэтому можно создать так много карт, и внутри каждой карты у меня есть кнопка, при нажатии кнопки я открываю div внутри этой карты. Но в настоящее время при нажатии кнопки div открывается на каждой карте, поскольку она находится в цикле. Как это исправить

Ответ №1:

Поддерживайте правильные идентификаторы для каждого div внутри цикла foreach, чтобы он правильно расширялся и сворачивался, для справки ниже приведен пример кода html и typescript.

—.html

 <div class="row" *ngFor="let item of itemList;let i=index;">
    <div class="col">
      <div class="row bg-light" (click)="onClick(item,i,item.collapsed)"
        [attr.aria-expanded]="item.collapsed" aria-controls="item.name">
           <div class="col background-grey">
             <label>{{item.name}}</label>
           </div>
     </div>

    <div id="{{item.name}}" [collapse]="item.collapsed" [isAnimated]="true" class="container">
    // content goes here
    </div>
</div>
  

—.ts

 itemList = [];

ngOnInit() {
 for(let i=0;i<5;i  ){
    const objItem = {name:'name' i,collapsed:true};
    this.itemList.push(objItem);
  }
}

onClick(item,index,collapsed){
   this.itemList[index].collapsed = !collapsed;
}