Здесь есть две части вашей проблемы.
Из ответа выберите массив Events и назначьте его переменной уровня класса событий в event.component.ts
export class EventsComponent implements OnInit {
events: Event[];
constructor(private ticketlineservice: TicketlineService) { }
ngOnInit() {
this.ticketlineservice.getEventos().subscribe(events => {
this.events = events.Events;// This is the change for getting only events from the response
});
}
}
Таким образом, у вас будет только массив событий, а не весь ответ.
Второй шаг заключается в том, чтобы, как указано ниже, запустить основной цикл в li, а не в ul, как показано ниже:
<div class="text-center">
<ul>
<li class="btn bg-primary text-center" *ngFor="let event of events">
<h2>Evento:</h2>
<p>{{ event.NomeEspec }}</p>
<p>{{ event.CodEspec }}</p>
<p>{{ event.DiaHoraEspecs }}</p>
</li>
</ul>
</div>
Я хотел бы добавить еще одну полезную практику, которая заключается в добавлении оператора elvis или безопасного оператора, чтобы ваш HTML не переставал работать.
event.NomeEspec ---> event? .NomeEspec
Таким образом, если событие не определено , мы можем безопасно получить доступ к свойствам объекта события.
Обновление
getEventos():Observable<Event[]>{
//get todos os eventos
return this.http.get<Event[]>(this.url_node, httpOptions);
}
здесь вы набираете тип ответа на Event [], который вам придется немного изменить, как показано ниже.
**getEventos():Observable<Event[]>{
//get todos os eventos
return this.http.get<Event[]>(this.url_node, httpOptions).map(response=> response.Events);// map operstor takes your response and sends the Events array as a part of the response for your HTTP call.
}**