javascript - 如何只影响 for 循环列表中的一项?

标签 javascript html angular typescript ionic-framework

我想操作使用 for 循环 (ngFor) 生成的列表中的项目。但是目前,如果我想更改一个,它会更改我所有的项目。我怎样才能只将它装饰到一件元素上,让一件元素的颜色和图标发生变化?

html

<ion-list>
 <ion-item *ngFor="let friend of loadedFriends; let i = index">


          <ion-label text-wrap>
                  <h2 class="title">Friend</h2>
                  <p class="status"> Status</p> 
                </ion-label>
                <ion-buttons>
                    <ion-button size="large" (click)="removeFriend(i)" (click)="onAdd(i)" slot="icon-only">
                    <ion-icon [color]="added ? 'primary' : 'light'" [name]="added ? 'add-circle-outline' : 'checkmark-circle-outline'"></ion-icon>
                  </ion-button>
                </ion-buttons>
              </ion-item>
        </ion-list>

  public added: boolean = true;

...

onAdd(id: number): void {
  this.added = !this.added;
}

最佳答案

您必须跟踪循环中每个项目的已添加状态。

这里有一个方法:

loadedFriendsMap: { [k: string]: boolean } = {};

/* ... */

onAdd (friendId) {
 this.loadedFriendsMap[friendId] = true;
}

removeFriend (friendId) {
 this.loadedFriendsMap[friendId] = false;
}

/* ... */
<ion-list>
    <ion-item *ngFor="let friend of loadedFriends; let i = index">
        <ion-label text-wrap>
            <h2 class="title">Friend</h2>
            <p class="status"> Status</p> 
        </ion-label>

        <ion-buttons>
            <ion-button size="large" (click)="removeFriend(i)" (click)="onAdd(i)" slot="icon-only">
            <ion-icon [color]="loadedFriendsMap[i] ? 'primary' : 'light'" [name]="loadedFriendsMap[i] ? 'add-circle-outline' : 'checkmark-circle-outline'"></ion-icon>
            </ion-button>
        </ion-buttons>
    </ion-item>
<ion-list>

关于javascript - 如何只影响 for 循环列表中的一项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58040357/

相关文章:

javascript - 加载一次 HTML 对象并多次使用

angular - 找不到 e2e tsconfig 类型 : error TS2304: Cannot find name 'browser'

typescript - 没有字符串的提供者

javascript - Object.create 工作 new() 不

javascript - 将参数传递给事件监听器并获取 keyCode

javascript - 将数据传递给动态创建的 Angular 模块和组件

javascript - Angular 2 Observables - 对 Action 的空响应仍然显示数组中的数据

javascript - 将 d3force 应用于具有多个组的网络

html - "Save as"来自 HTML 表单的响应

html - 使用flask从html输入到mysql;只接受单字符输入