Я только учусь Angular и борюсь все эти выходные. У меня есть http-вызов для получения коллекции объектов Schedule. Объекты отображаются в DOM, но я не могу получить доступ к свойствам в моем классе компонентов, которые мне нужно сделать для управления выводом.
Моя служба
public getSchedule(model: GetSchedule): Observable<Schedule[]> {
console.log('called get schedule in the service');
console.log(model);
console.log(environment.urls.appointment.getSchedule);
return this.http.post<Schedule[]>(environment.urls.appointment.getSchedule , model);
Мой компонент
public schedules: Schedule[];
daySelected:string;
public getSchedule(){
console.log(this.daySelected);
let time = new Date(this.daySelected)
let date = this.datePipe.transform(time, 'yyyy-MM-dd');
const search = new GetSchedule();
search.date = date;
//search.plant = this.shipment.origin.id;
search.plant = "1300";
search.transitType =1;
search.isPreloaded=this.isPreloaded;
this.appointmentService.getSchedule(search).subscribe((schedules)=>{
this.schedules=schedules;
console.log(this.schedules); <---------This prints out the array of all schedules properly
console.log(this.schedules.startTime); <--------------------This returns undefined
});
}
HTML
<div class = "col-sm-4">
<ng-container *ngIf="schedules?.StartTime">
<div *ngFor="let schedule of schedules; trackBy:trackDay; let i = index;" >
<div><input type="radio" class="hidden" name="slot" [(ngModel)]="slotSelected" (change)="scheduleSlot(slotSelected)" id="{{schedules.indexOf(schedule)}}" value={{i}}>
<label [ngClass]="{'disabled': schedule.Block ==1}" class="radio" for="{{schedules.indexOf(schedule)}}">{{schedule.StartTime}}</label></div>
</div>
</ng-container>
</div>
Если я удалю оператор elvis в ngIf страница отображается с правильным временем начала, но если я попытаюсь указать время начала console.log, оно вернет undefined. Если оставить оператор elvis, то ничего не будет отображаться.
Вызов api возвращает массив, содержащий 72 объекта со следующей формой в консоли браузера: (72) [{...}, {...}, { ...} ....]. При раскрытии отображается 0: { список всех свойств с правильными значениями }
В расписании есть свойство для слота, число от 1 до 12 соответствует двухчасовому окну. Он возвращает 6 записей на слот, поэтому мне нужно иметь возможность использовать find (x => x.startTime == "8:00"), чтобы возвращать только одну запись на слот. Но всякий раз, когда я добавляю, что startTime выбрасывается как undefined.
Есть идеи?