Патч-запрос к API в Angular 6 Обновление только последнего элемента в массиве объектов - PullRequest
1 голос
/ 09 марта 2019

У меня есть футбольная команда с именами и реквизитами игроков. Я открываю модель, чтобы редактировать данные игрока.

Когда я устанавливаю новые данные, которые затем запускают запрос исправления, данные, кажется, редактируют последний элемент в массиве объектов, а не конкретный элемент, который я редактирую.

У меня есть действительно элементарная настройка в моем компоненте, посредством которой патч отправляется оттуда вместо моего сервиса, но сейчас мне просто нужно увидеть, как он работает. Я могу настроить это позже.

Есть идеи, почему это может происходить?

У меня есть ощущение, что это может быть петля?

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

} * * тысяча двадцать-один

Модальные данные отображаются правильно, так что почти уверены, что их нет в представлении, но рады поделиться формой, если это может быть проблемой.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 10 марта 2019

Вам нужно сделать два изменения:

Удалите это для цикла:

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

И вместо этого.player_id используйте hometeam.id, например:

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