Я вызываю HTTP-запрос и привожу полученный ответ к требуемому типу с помощью интерфейса в службе. Ответ HTTP представляет собой объект JSON с некоторой парой элементов «ключ-значение». Я подписался на эту услугу в компоненте. Когда я консольно регистрирую ответ, полученный в функции подписки, он отлично регистрирует объект с парой ключ-значение. Но когда я назначаю этот объект члену класса компонента, кажется, что он не приводится к требуемому типу интерфейса. Потому что, когда я использую ключи переменной члена класса в компоненте html, я получаю сообщение об ошибке: «Невозможно прочитать свойство« X »неопределенного»
Вот фрагменты кода -
Интерфейс
export interface NewsItem {
status: string;
totalResults: number;
articles: any[];
}
Услуга
export class NewsService {
constructor(private http: HttpClient) {}
getCategoryNews(): Observable<NewsItem>{
return this.http.get<NewsItem>(newsUrl);
}
}
компонент.ts
export class NewsContainerComponent implements OnInit {
newsData: NewsItem;
constructor(private _newsService: NewsService) {}
ngOnInit() {
this._newsService.getCategoryNews().subscribe(
(response) => {
this.newsData = response;
console.log(this.newsData);
},
(err) => {
console.error(err);
}
)
}
}
компонент.html
<div *ngFor="let item of newsData.articles">
{{item.description}}
</div>
Фактический ответ на HTTP-запрос выглядит следующим образом.
{
"status":"ok",
"totalResults":2,
"articles":[
{
"source":{
"id":"google-news-au",
"name":"Google News (Australia)"
},
"title":"Former Malaysian PM questioned on graft",
"description":"Former Malaysian Prime Minister Najib Razak could face criminal charges after being questioned over a corruption scandal."
},
{
"source":{
"id":"the-guardian-uk",
"name":"The Guardian (UK)"
},
"title":"Manchester Arena attack: thousands to mark anniversary",
"description":"Series of events across city including a mass singalong are being held one year on from terrorist attack",
}
]
}
В случае с приведенным выше кодом я получаю сообщение об ошибке «Невозможно прочитать статьи о свойствах неопределенного». Почему я получаю эту ошибку даже при вводе HTTP-ответа с интерфейсом?