Отправка ответа в Angular2 на запрос http, оставаясь в формате JSON
Я пытаюсь Angular2 с TypeScript и возникают проблемы, пытаясь получить ответ от моего http-запроса. Это ответ массива от сервера, и у меня есть определенный класс, который должен быть сопоставлен с ним. Код ниже. Кто-нибудь может определить проблему?
this.http
.get(this.testUrl, {
data: JSON.stringify(mockData),
headers: this.headers
})
.map(response => response.json() as People[])
.subscribe(result => this.peopleList = result);
Список людей определяется в классе как
peopleList: People[];
Мой класс Люди выглядит так
export class Flight {
Name: string;
Age: number;
}
Выходными данными всегда являются данные в массиве, но только массив Json. Если я изменяю свойство Name на DummyName, оно все равно показывает тот же вывод для данных в массиве после того, как оно было "преобразовано" в People[].
Должен ли я видеть свойства класса? Я использую отладчик Chrome для опроса переменной
Редактировать, добавив console.log() info. Это массив около 300.
[0 … 99]
0 : Object
Name : "Simon"
Age : 45
__proto__:Object
1:Object
Name:"Luke"
Age:21
__proto__:Object
1 ответ
Результат, который вы получаете, когда звоните res.json()
является только простым объектом (POJO), а не экземпляром класса. Это означает, что их тип будет object
, Тот факт, что вы "разыгрываете" вручную, не меняет того факта, что объекты не являются экземплярами класса. People
,
У вас есть два варианта работы с POJOS:
- Определите их через интерфейс (для этого вы должны превратить людей в интерфейс)
- Сопоставьте каждый элемент из вашего POJO-массива с экземпляром класса People с помощью метода constructor