Парс json угловой запрос поставил - PullRequest
0 голосов
/ 21 мая 2018

У меня небольшая проблема с моим запросом пут.В моем nodejs Если запрос выполнен успешно, я отправляю сообщение json в angular, как это.

res.json({ success: true, message: 'Success'})

В angular я создаю запрос на перехват этого сообщения после добавления или изменения объекта в базе данных.Если я добавляю объект, я могу поймать это сообщение из nodejs и могу проанализировать это сообщение, но если я хочу изменить один объект, я не могу проанализировать json, и у меня появляется это сообщение об ошибке.

enter image description here

Classe.service.ts

updateClasse(room, id) {
   const uri = 'http://localhost:4000/api/classes/update/' + id;
   const obj = { room: room };

   this.http.put(uri, obj).subscribe(
     (res:any)=> {
       this.okReq = res.message;
       return this.okReq;
     });
}

Classe.component.ts

  updateClasse(room) {
    this.route.params.subscribe(params => {
       this.service.updateClasse(room, params['id']);
     });
    this.router.navigate(['/classes']);
 }

Classe.html

{{ okReq }}
<form [formGroup]="angForm">
  <div class="form-group">
    <label class="col-md-4">Classe Name</label>
    <input type="text" class="form-control" formControlName="room" #room [(ngModel)] = "classe.room"/>
  </div>
  <div class="form-group">
    <button (click)="updateClasse(room.value)" class="btn btn-primary">Update</button>
  </div>
</form>

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Вы можете использовать универсальные типы, чтобы установить тип возвращаемого значения из операций http.Предположим, у вас уже есть тип MessageResponse:

interface MessageResponse {
  success: boolean;
  message: string;
}

Теперь вы можете использовать это как универсальный аргумент для .put:

this.http.put<MessageResponse>(uri, obj)

Теперь предполагается, что resбыть типа MessageResponse, что позволит вам получить доступ к res.message в виде строкового значения.


Кстати, я бы не стал использовать .subscribe в вашем сервисе.Вместо этого я буду использовать его всякий раз, когда вам нужно будет вызвать HTTP-запрос, например, в компоненте или другой службе, которая зависит от ответа.

0 голосов
/ 21 мая 2018

Просто измените свой ответ type как any

 this.http.put(uri, obj).subscribe(
     (res:any)=> {
       console.log(res.message)
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...