typescript 为什么这个循环在Angular 点击事件中显示相同的响应?

5vf7fwbs  于 2023-01-06  发布在  TypeScript
关注(0)|答案(1)|浏览(122)

我试图根据我们点击的用户选项卡记录用户的数据。但问题是它显示的是同一个数据,而不是其他数据。

像上面,如果我点击萨拉它显示我萨拉,但当我点击编辑它仍然显示萨拉。请有人帮助如何实现根据用户标签点击的数据
ts文件

response: Array<any> = [];

getUsers(){
    this.http.get('https://dummyapi.io/data/v1/user', {
      headers: new HttpHeaders().set('app-id', '63a1a3fdf4c5089b8564caef'),
      params: new HttpParams().set('limit', '50')
    }).subscribe(data => {
      
      this.response.push(data);

    }), ((error: object) => {
      console.log(error)
    })
  }

 showChat(){
    for(let i=0; i<this.response.length; i++){
      console.log(this.response[0].data[i])
    }
  }

超文本标记语言文件

<div class="user-bottom">
        <div class="all-users" *ngFor="let array of response" (click)="showChat()" >
            <div class="nested-items" *ngFor="let data of array.data">
                <h4>{{data.firstName}}</h4>&nbsp;
                <img src="{{data.picture}}" alt="profile">
            </div>
        </div>
    </div>
bgibtngc

bgibtngc1#

有几件事是错的。
response只包含一个元素,因此showChat()中的for循环只循环一次。
单击侦听器位于父元素上,而不是每个单独的子元素上。
在当前设置下,您可能需要一个模板,大致如下:

<div class="user-bottom">
  <div class="all-users" *ngFor="let array of response">
    <div class="nested-items" *ngFor="let data of array.data; let i = index;" (click)="showChat(i)">
      <h4>{{data.firstName}}</h4>&nbsp;
      <img src="{{data.picture}}" alt="profile">
    </div>
  </div>
</div>

你的方法会变成这样:

showChat(i: number) {
  console.log(this.response[0][i]);
}

这有道理吗?

相关问题