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)
我有一支足球队,其中包含球员姓名和详细信息。我打开一个模型以编辑玩家的详细信息。
当我设置新数据然后触发补丁请求时,数据似乎编辑了对象数组中的最后一项,而不是我正在编辑的特定项目。
我的组件中有一个非常基本的设置,补丁是从那里发送的,而不是我的服务,但现在,我只需要看看它是否有效。稍后我可以正确设置它。
关于为什么会发生这种情况有什么想法吗?
我感觉这可能是循环?
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)