res.json () HttpClient Response - PullRequest
       36

res.json () HttpClient Response

0 голосов
/ 21 февраля 2019

Я понимаю, что новые обновления не требуют преобразования ответа в JSON.

Учебное пособие, которым я следую, помещает это в api.service.ts

export class ApiService {

  constructor(private http: HttpClient){}

  messages = []
  getMessage(){
    this.http.get('http://localhost:3000/newroute').subscribe(res =>{
      this.messages = res.json()
    })
  }

}

Однако, с новым обновлением "res.json ()" не работает.Я получаю следующую ошибку: Свойство 'json' не существует для типа 'Объект'.

Как я могу решить эту проблему?

Вот данные, которые я пытаюсь просмотреть:1010 *

var posts = [
{message:'Hello World'},
{greeting:'Whats going on'}
]

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Angular позволяет вам проверять тип ответа .Вам не нужно анализировать JSON вручную.

Вот фрагмент кода из вашего примера (я рекомендую использовать типы):

messages: Message[] = []
getMessage() {
  this.http.get<Message[]>('http://localhost:3000/newroute').subscribe((res: Message[]) => {
    this.messages = res;
  });
}

(обновление)

На основеВ предоставленных вами данных интерфейс для сообщения может выглядеть следующим образом:

export interface Message {
  [s: string]: string;
}

Однако, если «Сообщения» могут иметь только определенные ключи, такие как «сообщение» и «приветствие», то вы можете добавить любой из них.а также необязательные свойства.

export interface Message {
  message?: string;
  greeting?: string;
}
0 голосов
/ 21 февраля 2019

HttpClient предоставляет вам только объект json, поэтому не нужно снова делать .json (). Так что выполните следующий код, он работает для вас

getMessage(){
  this.http.get('http://localhost:3000/newroute').subscribe(res =>{
  let messages: any = res;
  this.messages = messages;
  })
}
0 голосов
/ 21 февраля 2019

Просто сделайте:

getMessage(){
  this.http.get('http://localhost:3000/newroute').subscribe(res =>{
  this.messages = res;
  })
}
...