Angular 仅切换所选项目

Angular toggle only selected item

我有一个动态创建的列表。 单击列表中的每个项目都会切换。

这是.html代码:

<ul *ngFor="let item of items">
    <li (click)="toggle($event)">{{text}}</li>
</ul>

.ts 代码:

toggle(event) {
    this.visible = !this.visible;
}

当我点击一个项目时,列表中的所有项目都会切换。

如何更改它以便只有单击的项目才会切换?

我认为这不是“切换”情况,因为一旦某个东西不可见你怎么能点击它呢?

无论如何,您可以将每个 <li> 作为组件,而不是每个 visible 都在不同的范围内。 另一种方法是,您可以向 item 对象添加一个 属性,例如 visible,然后每次点击都会根据需要更改值。

例如:

<ul *ngFor="let item of items">
    <li *ngIf="item.visible" (click)="item.visible = false">{{item.text}}</li>
</ul>

// make a global variable array
expandedItemIndexes = [] as any;
// Pass in an id you get from the html object
toggleItem(itemId): void {
  // Create a new variable that is an array
  
  if (this.expandedItemIndexes.includes(itemId)) {
    // if the index is included in the array of indexes, remove it
    this.expandedItemIndexes.splice(this.expandedItemIndexes.indexOf(itemId), 1);
  } else {
    // else push it into the array to expand the item
    this.expandedItemIndexes.push(itemId);
  }
}

在 HTML 中将 ngIf="expandedItemIndexes.includes(item.id)" 放在要切换的 div 上。