Reputation: 2087
I am angular 2 beginner. I have created calendar using fullcalendar in angular-2. Firstly I have create events in calendarOptions and its work well. But I am try to service with fullcalendar it does not work. Because I have no idea how to use services with fullcalendar.
event.json
{
"data": [
{
"title": "All Day Event",
"start": "2017-04-01"
},
{
"title": "Long Event",
"start": "2017-04-07",
"end": "2017-04-10"
}
]
}
events.service.ts
import { Injectable } from '@angular/core';
import { Headers, Http , Response} from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class EventsService {
data: object;
constructor(private http: Http) { }
getEvents()
{
return this.http.get("src/assets/data/events.json").map( response => response.json().data);
}
}
full-calendar.component.ts
import { Component, OnInit } from '@angular/core';
import { EventsService } from './events.service';
@Component({
selector: 'app-full-calendar',
templateUrl: './full-calendar.component.html',
styleUrls: ['./full-calendar.component.css']
})
export class FullCalendarComponent implements OnInit {
events: object;
constructor(private eventsService: EventsService){}
ngOnInit(){
this.events = this.eventsService.getEvents().subscribe(events => {this.events = events;});
console.log(this.events);
}
calendarOptions:Object = {
height: 'auto',
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay, prevYear,nextYear'
},
editable: true,
eventLimit: true,
events: this.events,
eventClick: function(event, jsEvent, view) {
alert('Event: ' + event.title + ' ' + 'Start Date: ' + event.start);
$(this).css('border-color', 'red');
},
dayClick: function(date, jsEvent, view) {
alert('Clicked on: ' + date.format());
$(this).css('background-color', 'red');
}
};
}
Please tell us. How to use service with fullcalendar?
Upvotes: 1
Views: 1888
Reputation: 2087
Yes service is use in fullcalendar angular-2
full-calendar.component.ts
events: object;
constructor(private eventsService: EventsService){}
ngOnInit(){
this.eventsService.getEvents().subscribe(events => {this.events = Events;},
err => alert(err),
() => console.log(this.events));
}
calendarOptions(){
let calendarOptions:Object = {
height: 'auto',
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay, prevYear,nextYear'
},
editable: true,
eventLimit: true,
events: this.events,
eventClick: function(event, jsEvent, view) {
alert('Event: ' + event.title + ' ' + 'Start Date: ' + event.start);
},
dayClick: function(date, jsEvent, view) {
alert('Clicked on: ' + date.format());
}
};
return(calendarOptions);
}
Edit your html file :-
<angular2-fullcalendar [options]=calendarOptions()>{{options | json}}</angular2-fullcalendar>
Its works well.
Upvotes: 1