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

问题描述 投票:1回答:1

我有一个拥有球员姓名和细节的足球队。我打开一个模型来编辑玩家的详细信息。

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

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

关于为什么会发生这种情况的任何想法?

我有一种感觉它可能是循环?

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');
});

}

模态数据正确呈现,因此非常确定它不在视图中,但如果这可能是问题,则很乐意共享表单。

任何帮助将不胜感激。

angular typescript api request patch
1个回答
0
投票

您需要进行两项更改:

删除此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)
© www.soinside.com 2019 - 2024. All rights reserved.