Harleen Kaur Arora
Harleen Kaur Arora

Reputation: 2087

How to use services with fullCalendar in angular 2?

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

Answers (1)

Harleen Kaur Arora
Harleen Kaur Arora

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

Related Questions