Reputation: 174696
I want to add calender events dynamically. Currently I'm using angular2-fullcalender
package.
calender.ts
calendarOptions: Object = {
editable: false,
eventLimit: true,
header: {
left: 'title',
center: 'month,agendaWeek,agendaDay',
right: 'prev,next,today'
},
defaultDate: new Date(),
selectable: false,
selectHelper: false,
views: {
month: { // name of view
titleFormat: 'MMMM YYYY'
// other view-specific options here
},
week: {
titleFormat: " MMMM D YYYY"
},
day: {
titleFormat: 'D MMM, YYYY'
}
},
events: []
};
I have tried the below code to add events to the calender from the service response.
// call to the backend service
getEvents() {
events = backend.events;
this.calendarOptions.events = events;
}
But typescript shows error on the above line. If I do so, then I also want to render the calender once events are added. All other answers shown on SO are regarding angular1.5 and not for angular2.
Update:
I have tried all the available options given below . But no one works.
addEvents() {
let myCalendar: any = jQuery('angular2-fullcalendar');
myCalendar.fullCalendar();
myCalendar.fullCalendar('removeEvents');
for (let event of this.events) {
myCalendar.fullCalendar( 'renderEvent', event, true);
}
// jQuery('angular2-fullcalendar').fullCalendar('addEventSource', this.events);
// jQuery('angular2-fullcalendar').fullCalendar('renderEvents');
}
Upvotes: 1
Views: 10253
Reputation: 440
I can't see any methods in that package for rendering new events.
I think you have to go mad and use jquery inside angular, which you should avoid.
getEvents() {
events = backend.events;
this.calendarOptions.events = events;
$('#myCalendar').fullCalendar('renderEvents', events, true);
}
https://fullcalendar.io/docs/event_rendering/renderEvents/
Update/edit
Okay so I created a new project with angular CLI just to test that. This is what i have to get it working
template
<angular2-fullcalendar id="myCalendar" [options]="calendarOptions"></angular2-fullcalendar>
Component
import { Component } from '@angular/core';
import * as $ from 'jquery';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
calendarOptions = {
height: 'auto',
contentHeight: 'auto',
fixedWeekCount: false,
editable: true,
eventLimit: true,
defaultView: 'agendaWeek',
slotDuration: '01:00:00',
firstDay: 1,
header: {
right: 'today prev,next'
},
events: [
]
};
constructor() {
}
ngOnInit() {
let newEvents = [
{
id: 1,
title: 'name a',
start: '2017-02-20T09:00',
end: '2017-02-20T11:00'
},
{
id: 2,
title: 'name b',
start: '2017-02-20T12:00',
end: '2017-02-20T13:00'
},
{
id: 3,
title: 'name c',
start: '2017-02-20T14:00',
end: '2017-02-20T16:00'
},
{
id: 4,
title: 'name d',
start: '2017-02-20T18:00',
end: '2017-02-20T23:00'
}
];
this.calendarOptions.events = newEvents;
$('#myCalendar').fullCalendar('renderEvents', newEvents, true);
}
}
Upvotes: 4