Angular 中 API 的补丁请求 6 仅更新对象数组中的最后一项

Patch Request to API in Angular 6 Updating only the Last Item in Object Array

我有一支足球队,其中包含球员姓名和详细信息。我打开一个模型以编辑玩家的详细信息。

当我设置新数据然后触发补丁请求时,数据似乎编辑了对象数组中的最后一项,而不是我正在编辑的特定项目。

我的组件中有一个非常基本的设置,补丁是从那里发送的,而不是我的服务,但现在,我只需要看看它是否有效。稍后我可以正确设置它。

关于为什么会发生这种情况有什么想法吗?

我感觉这可能是循环?

getHomeTeam(): void {
this.HometeamService.getHomeTeam().subscribe(hometeam => {
  this.hometeam = hometeam;
    for (let i =0; i < hometeam.length; i++) {
     this.player_id = hometeam[i].id;
    }
  });
}

更新

所以修复非常简单,感谢@robert 的帮助,我需要将 hometeam.id 传递到补丁请求中而不是 this.player_id

updatePlayer(hometeam) {
let player_id = hometeam.id;
this.http.patch('https://sidelineapp.io/demo/api/1.1/tables/home_team/rows/' + hometeam.id, hometeam).subscribe(status => {
  console.log(hometeam.id);
  this.getHomeTeam();
  this.ngxSmartModalService.close('playerModal');
});

}

模态数据正确呈现,所以很确定它不在视图中,但如果这可能是问题,我们很乐意分享表单。

如有任何帮助,我们将不胜感激。

您需要进行两项更改:

删除这个 for 循环:

for (let i =0; i < hometeam.length; i++) {
     this.player_id = hometeam[i].id;
}

而不是 this.player_id 使用 hometeam.id 像这样:

updatePlayer(hometeam) { this.http.patch('https:some_url/' + this.hometeam.id, hometeam)