Uncaught Error: невозможно преобразовать «неопределенное» в дату (Angular) - PullRequest
0 голосов
/ 07 апреля 2020

В этом примере я хочу получить все данные о бронировании из службы и вывести их sh в массив CalendarEvent []. Но я получил эту ошибку Uncaught Error: Unable to convert "undefined" into a date. Я предположил, что с моим сервисом что-то не так?

ng-calendar.component.ts:

export class NgCalendarComponent {
  events: CalendarEvent[] = [];
  bookings: any = {};
  date: string;

  constructor(private bookingService: BookingService) {}

  ngOnInit() {
    this.bookings = this.bookingService.getAllBookings();

    for (let booking of this.bookings) {
      var b = this.bookings[booking];
      this.date = formatDate(b.bookDate, 'medium', 'en-us', 'GMT+8');

      this.events.push({
        start: new Date(this.date),
        title: b.purpose,
      });
    }
  }

booking.service.ts:

export class BookingService {
  constructor(private http: HttpClient) { }

  getAllBookings() {
    return this.http.get('/api/bookings/')
      .pipe(map(response => response));
  }
}

BookingResource. cs:

public class BookingResource
{
    public int Id { get; set; }
    public RoomResource Room { get; set; }
    public KeyValuePairResource Building { get; set; }
    public DateTime BookDate { get; set; }
    public ContactResource Contact { get; set; }
    public string Purpose { get; set; }
    public ICollection<TimeSlotResource> TimeSlots { get; set; }

    public BookingResource()
    {
        TimeSlots = new Collection<TimeSlotResource>();
    }
}

1 Ответ

0 голосов
/ 07 апреля 2020

getAllBooking() возвращает наблюдаемое, вы должны подписаться на него, чтобы получить результат. Или преобразовать его в обещание:

  async getAllBookings() {
    return this.http.get('/api/bookings/').toPromise();
  }

И назвать его так:

  async ngOnInit() {
    this.bookings = await this.bookingService.getAllBookings();
    ...
...