eventMouseOver fullCalendar Angular 6无法正常工作 [英] eventMouseOver fullCalendar Angular 6 doesn't work

查看:85
本文介绍了eventMouseOver fullCalendar Angular 6无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在角度6中使用的是全日历版本:3.6.1,并且当mouseOver事件发生时,我想显示一个popOver 我在component.html中没有添加(eventMouseOver)时出现的问题是

I am using full-calendar version : 3.6.1 in angular 6 and I want to display a popOver when the mouseOver an event The problem that when I add (eventMouseOver) in component.html nothing is happin

这是我的calendar.component.ts代码

This is my code for calendar.component.ts

import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
import {CalendarComponent} from 'ng-fullcalendar';
import { Options } from 'fullcalendar';
import {CompanyService} from '../company/company.service';
import {Person} from '../person';
import { Event } from '../event';
import {style} from '@angular/animations';
import {validate} from 'codelyzer/walkerFactory/walkerFn';
import {NgbPopoverConfig} from '@ng-bootstrap/ng-bootstrap';
import * as $ from 'jquery';
@Component({
  selector: 'app-calendars',
  templateUrl: './calendars.component.html',
  styleUrls: ['./calendars.component.css']
})
export class CalendarsComponent implements OnInit {

  @ViewChild(CalendarComponent) ucCalendar: CalendarComponent;
  calendarOptions: Options;
  event: Event;
  events = [];
  person: Person;
  persons = [];
  elemChecked = [];
  color;
  idsStr = '';
  eventOut;
  modal = false;
  SelectedEvent: Event;
  selectedPerson: Person;
  constructor(private Service: CompanyService,private config: NgbPopoverConfig, private element: ElementRef) {
    config.placement = 'right';
    config.triggers = 'hover';
  }

  ngOnInit() {
  this.getDataFromServer();
  setTimeout(() => {
    this.createCalendar();
  }, 500);

  }

  getDataFromServer() {
    this.Service.getPerson().subscribe(data => {
      data.forEach((value => {
        this.person = {
          id: value.id,
          name: value.name,
          color: value.color,
          event: ''
        };
        this.persons.push(this.person);
      }));
      data.forEach((value => {
        let length = value.event.length;
        for (let i = 0 ; i < length; i++) {
          this.event = {
            id: value.event[i].id,
            title: value.event[i].title + '-' + value.name,
            start: value.event[i].start,
            end: value.event[i].end,
            color: value.event[i].color,
            person: value.id,
            ngbPopover: 'qsdqsd'
          };
          this.events.push(this.event);
        }
      }));
      this.persons.forEach((value => {
        this.elemChecked.push(value.id);
      }));
    });

  }
  createCalendar() {
    this.calendarOptions = {
      editable: true,
      eventLimit: true,
      header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay,listMonth'
      },
      selectable: true,
      events: this.events,
      slotEventOverlap: false,
    };
  }

  Color(elem) {
    this.color = null;
    this.persons.forEach((value => {
      if (+value.id === +elem.target.id) {
         this.color = value.color;
      }
    }));
    if (elem.target.checked) {


      elem.target.parentElement.style.background = this.color ;
      this.elemChecked.push(+elem.target.id);
      elem.target.style.marginRight = '500px';

    } else {

      for (let i = 0; i < this.elemChecked.length; i ++) {
        if (+this.elemChecked[i] === +elem.target.id) {
          this.elemChecked.splice(i, 1);
        }
      }
      elem.target.parentElement.style.background = '#DCDCDC';
      console.log('grey');
    }
    this.updateData(this.elemChecked);

  }
  updateData(ids) {
    this.events = [];
    this.idsStr = '';
   ids.forEach( (value => {
     this.idsStr = this.idsStr + value + ';' ;
   }));
   this.Service.getEventsByIds(this.idsStr).subscribe(data => {
     this.events = data;

     data.forEach((value => {
      for (let i = 0; i < value.length; i ++) {
        this.event = {
          id: value[i].id,
          title: value[i].title + '-' + value[i].person.name,
          start: value[i].start,
          end: value[i].end,
          color: value[i].color,
          person: value[i].person.id
        };
        this.events.push(this.event);
        this.ucCalendar.renderEvents(this.events);
      }
     }));
   });


  }
  EventClick(calEvent, jsEvent, view, resourceObj, element) {

    calEvent.target.style.width = '1px';
    this.SelectedEvent = {
      title: calEvent.detail.event.title,
      start: calEvent.detail.event.start,
      end: calEvent.detail.event.end,
      color: calEvent.detail.event.color,
      person: calEvent.detail.event.person
    };
    this.persons.forEach((value => {
      if (value.id === calEvent.detail.event.person) {
        this.selectedPerson = {
          name: value.name
        };
      }
    }));
    this.modal = true;
  }

  closeModal() {
    this.modal = false;
  }
  MouseOver(event) {
  console.log(event);
  }
  EventRender(event) {
   this.ucCalendar.eventMouseOut.emit(console.log('qsdqs'));
  }
}

calendar.component.html

calendar.component.html

    <div *ngIf="calendarOptions">
  <ng-fullcalendar #ucCalendar [options]="calendarOptions"
                   (eventClick)="click($event)"
                   (eventMouseOver)="MouseOver($event)"
                    ></ng-fullcalendar>
</div>

我知道这是与此 topic 的重复项,但那里没有答案

I know that it's a duplicate for this topic but there is no answer there.

推荐答案

您可以捕获从控件发出的CustomEvent:

You can catch CustomEvent emitted from control:

html

<ng-fullcalendar ... (eventMouseover)="MouseOver($event)"
                                ^
                             lowercased o

component.ts

MouseOver(event) {
  console.log(event.detail);
}

这篇关于eventMouseOver fullCalendar Angular 6无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆