我正在尝试使用in 2-calendar创建一个调度程序,但是当我想要保存事件时,我总是在控制台中得到这个错误。这会不会是安装it 2-calendar npm包时的一个错误?
core.js:6479 ERROR TypeError: Cannot read property 'getFullYear' of null
at MonthViewComponent.onDataLoaded (ionic2-calendar.js:1768)
at SafeSubscriber._next (ionic2-calendar.js:1576)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:183)
at SafeSubscriber.next (Subscriber.js:122)
at Subscriber._next (Subscriber.js:72)
at Subscriber.next (Subscriber.js:49)
at Subject.next (Subject.js:39)
at CalendarService.loadEvents (ionic2-calendar.js:1492)
at CalendarComponent.loadEvents (ionic2-calendar.js:3596)
at schedule.page.ts:134这是我的代码"scheduler.page.ts“。为了让函数正常工作,代码中有没有我可能遗漏的东西?
import { CalendarComponent } from 'ionic2-calendar';
import { Component, ViewChild, OnInit, Inject, LOCALE_ID } from '@angular/core';
import { AlertController, ModalController } from '@ionic/angular';
import { formatDate } from '@angular/common';
import { CalModalPage } from '../cal-modal/cal-modal.page';
@Component({
selector: 'app-schedule',
templateUrl: 'schedule.page.html',
styleUrls: ['schedule.page.scss'],
})
export class SchedulePage implements OnInit {
eventSource = [];
viewTitle: string;
calendar = {
mode: 'month',
currentDate: new Date()
};
selectedDate: Date;
@ViewChild(CalendarComponent) myCal: CalendarComponent;
constructor(
private alertCtrl: AlertController,
@Inject(LOCALE_ID) private locale: string,
private modalCtrl: ModalController
) {}
ngOnInit() {}
loadEvents() {
this.eventSource = this.createRandomEvents();
}
createRandomEvents() {
var events = [];
for (var i = 0; i < 50; i += 1) {
var date = new Date();
var eventType = Math.floor(Math.random() * 2);
var startDay = Math.floor(Math.random() * 90) - 45;
var endDay = Math.floor(Math.random() * 2) + startDay;
var startTime;
var endTime;
if (eventType === 0) {
startTime = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + startDay));
if (endDay === startDay) {
endDay += 1;
}
endTime = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + endDay));
events.push({
title: 'All Day - ' + i,
startTime: startTime,
endTime: endTime,
allDay: true
});
} else {
var startMinute = Math.floor(Math.random() * 24 * 60);
var endMinute = Math.floor(Math.random() * 180) + startMinute;
startTime = new Date(date.getFullYear(), date.getMonth(), date.getDate() + startDay, 0, date.getMinutes() + startMinute);
endTime = new Date(date.getFullYear(), date.getMonth(), date.getDate() + endDay, 0, date.getMinutes() + endMinute);
events.push({
title: 'Event - ' + i,
startTime: startTime,
endTime: endTime,
allDay: false
});
}
}
return events;
}
// Change current month/week/day
next() {
this.myCal.slideNext();
}
back() {
this.myCal.slidePrev();
}
// Selected date reange and hence title changed
onViewTitleChanged(title) {
this.viewTitle = title;
}
// Calendar event was clicked
async onEventSelected(event) {
// Use Angular date pipe for conversion
let start = formatDate(event.startTime, 'medium', this.locale);
let end = formatDate(event.endTime, 'medium', this.locale);
const alert = await this.alertCtrl.create({
header: event.title,
subHeader: event.desc,
message: 'From: ' + start + '<br><br>To: ' + end,
buttons: ['OK'],
});
alert.present();
}
async openCalModal() {
const modal = await this.modalCtrl.create({
component: CalModalPage,
cssClass: 'cal-modal',
backdropDismiss: false
});
await modal.present();
modal.onDidDismiss().then((result) => {
if (result.data && result.data.event) {
let event = result.data.event;
if (event.allDay) {
let start = event.startTime;
event.startTime = new Date(
Date.UTC(
start.getUTCFullYear(),
start.getUTCMonth(),
start.getUTCDate()
)
);
event.endTime = new Date(
Date.UTC(
start.getUTCFullYear(),
start.getUTCMonth(),
start.getUTCDate() + 1
)
);
}
this.eventSource.push(result.data.event);
this.myCal.loadEvents();
}
});
}
removeEvents() {
this.eventSource = [];
}
}发布于 2021-08-24 07:18:05
尝试按如下方式更新您的createRandomEvents function else case startTime & endTime代码。
createRandomEvents() {
var events = [];
for (var i = 0; i < 50; i += 1) {
var date = new Date();
var eventType = Math.floor(Math.random() * 2);
var startDay = Math.floor(Math.random() * 90) - 45;
var endDay = Math.floor(Math.random() * 2) + startDay;
var startTime;
var endTime;
if (eventType === 0) {
startTime = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + startDay));
if (endDay === startDay) {
endDay += 1;
}
endTime = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + endDay));
events.push({
title: 'All Day - ' + i,
startTime: startTime,
endTime: endTime,
allDay: true
});
} else {
var startMinute = Math.floor(Math.random() * 24 * 60);
var endMinute = Math.floor(Math.random() * 180) + startMinute;
startTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + startDay, 0, date.getUTCMinutes() + startMinute);
endTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + endDay, 0, date.getUTCMinutes() + endMinute);
events.push({
title: 'Event - ' + i,
startTime: startTime,
endTime: endTime,
allDay: false
});
}
}
return events;
} https://stackoverflow.com/questions/68902662
复制相似问题