Asp.net 未捕获错误:无法转换";“未定义”;进入约会(角度)

Asp.net 未捕获错误:无法转换";“未定义”;进入约会(角度),asp.net,angular,typescript,angular-calendar,Asp.net,Angular,Typescript,Angular Calendar,在本例中,我希望从服务获取所有预订数据,并将它们推送到数组CalendarEvent[]。但是我收到了这个错误:无法将“未定义”转换为日期。我以为我的服务有问题 ng-calendar.component.ts: export class NgCalendarComponent { events: CalendarEvent[] = []; bookings: any = {}; date: string; constructor(private bookingService:

在本例中,我希望从服务获取所有预订数据,并将它们推送到数组CalendarEvent[]。但是我收到了这个错误:无法将“未定义”转换为日期。我以为我的服务有问题

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>();
    }
}
公共类BookingResource
{
公共int Id{get;set;}
公共房间资源室{get;set;}
public KeyValuePairResource Building{get;set;}
公共日期时间BookDate{get;set;}
公共联系人资源联系人{get;set;}
公共字符串用途{get;set;}
公共ICollection时隙{get;set;}
公共BookingResource()
{
时隙=新集合();
}
}
getAllBooking()
返回一个可观察的,您必须订阅它才能得到结果。或者将其转化为承诺:

  async getAllBookings() {
    return this.http.get('/api/bookings/').toPromise();
  }
这样称呼它:

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

执行console.log(this.booking)以查看答案看起来像什么您需要处理null check现在返回booking对象。您知道如何迭代所有这些预订对象并将其值推送到事件[]中吗?如果我尝试迭代,它将返回此错误。未捕获错误:未捕获(承诺中):TypeError:this.bookings不适合抱歉,我不熟悉javascript和typescript。。到目前为止,我一直在用java和c#编写代码……一次解决一个问题,承诺中的Uncaught就是它所说的,您首先应该捕获错误,查看它所说的内容,然后从那里开始。我运行了错误处理,它说“TypeError:this.bookings不可修复”。我的错误是,我忘了更新bookings api。谢谢@Noelmout。。我会学到更多。