Считывайте события из моего REST API ( весенняя загрузка) в мой fullcalendar с помощью Angular 11

#angular #spring-boot #api #fullcalendar #angular11

Вопрос:

Я бы извлекал события из REST API (весенняя загрузка), в моем fullcalendar ничего не отображается, но когда я использую статические события с INITIAL_EVENTS, это работает, и я не знаю, в чем проблема, пожалуйста, помогите мне, это результат моего API и моего кода :

 [{
id: 1,
title: "event1",
allDay: false,
start: "2021-04-30T23:00:00.000 0000",
end: "2021-05-01T00:00:00.000 0000"
},
{
id: 2,
title: "event2",
allDay: false,
start: "2021-05-02T00:00:00.000 0000",
end: "2021-05-02T01:00:00.000 0000"
},
{
id: 3,
title: "event3",
allDay: false,
start: "2021-05-02T23:00:00.000 0000",
end: "2021-05-03T00:00:00.000 0000"
}]
 

В моем dashboard.component.html:

 <full-calendar #calendar [options]="calendarOptions"></full-calendar>
 

В моей панели мониторинга.компонент.ts:

 export class DashboardComponent implements OnInit {

calendarVisible = true;
calendarOptions: CalendarOptions;
currentEvents: EventApi[] = [];

events: any;

handleCalendarToggle() {
this.calendarVisible = !this.calendarVisible;
}

handleWeekendsToggle() {
const { calendarOptions } = this;
calendarOptions.weekends = !calendarOptions.weekends;
}

handleDateSelect(selectInfo: DateSelectArg) {
const title = prompt('Please enter a new title for your event');


const calendarApi = selectInfo.view.calendar;
calendarApi.unselect(); // clear date selection

if (title) {
  calendarApi.addEvent({
    id: createEventId(),
    title,
    start: selectInfo.startStr,
    end: selectInfo.endStr,
    allDay: selectInfo.allDay
  });
  const data = {
    title: title,
    start: new Date(selectInfo.startStr),
    end: new Date(selectInfo.endStr), 
    allDay: selectInfo.allDay

  };
  this.dashboardService.add(data).subscribe(
    response => {
      console.log(response);
    },
    error => {
      console.log(error);
    });
}
}

handleEventClick(clickInfo: EventClickArg) {
if (confirm(`Are you sure you want to delete the event '${clickInfo.event.title}'`)) {
  clickInfo.event.remove();
  console.log(clickInfo.event.title);
  //this.remove(data);
}
}

handleEvents(events: EventApi[]) {
this.currentEvents = events;
console.log(this.currentEvents);
}

constructor( private dashboardService: DashboardService) { 

}

ngOnInit() {

this.dashboardService.getAll().subscribe(data => {
  this.events = data;
  console.log(this.events);
});

this.calendarOptions = {
  headerToolbar: {
    left: 'prev,next today',
    center: 'title',
    right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
  },
  initialView: 'dayGridMonth',
  events: this.events,
  weekends: true,
  editable: true,
  selectable: true,
  selectMirror: true,
  dayMaxEvents: true,
  select: this.handleDateSelect.bind(this),
  eventClick: this.handleEventClick.bind(this),
  eventsSet: this.handleEvents.bind(this),
  /* you can update a remote database when these fire:*/
  //eventAdd: this.add(),
  //eventChange: this.change(),
  //eventRemove: this.remove()
  
};
 

}
}

Комментарии:

1. Вероятно, события еще не закончили извлекаться до того, как вы попытаетесь передать массив событий в календарь. Помните, что запросы AJAX являются асинхронными. Видишь fullcalendar.io/docs/events-json-feed для способа, которым FullCalendar рекомендует настроить ленту событий. Или вы можете использовать fullcalendar.io/docs/events-function если вам нужна большая гибкость