Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Ionic2日历现在在设备上出现故障_Android_Angular_Cordova_Ionic Framework - Fatal编程技术网

Android Ionic2日历现在在设备上出现故障

Android Ionic2日历现在在设备上出现故障,android,angular,cordova,ionic-framework,Android,Angular,Cordova,Ionic Framework,我正在开发一款基于Ionic 4的应用程序,带有Angular 8,但出现了一个奇怪的情况。我正在使用 它似乎类似于。。。你会看到,我在那里发表了评论,询问他们是如何解决的,但毫无结果 它在使用ionic-serve的浏览器上运行良好,在我的android设备上运行良好(我还没有使用iOS)。 上周我的手机有一个andoid更新,从那以后,日历页面就不再工作了。 我已经剥离了大部分代码,并将其简化到现在(几乎)可以工作的程度,但我必须删除datasource对象。 这让我相信数据源中的数据有问题

我正在开发一款基于Ionic 4的应用程序,带有Angular 8,但出现了一个奇怪的情况。我正在使用

它似乎类似于。。。你会看到,我在那里发表了评论,询问他们是如何解决的,但毫无结果

它在使用ionic-serve的浏览器上运行良好,在我的android设备上运行良好(我还没有使用iOS)。 上周我的手机有一个andoid更新,从那以后,日历页面就不再工作了。 我已经剥离了大部分代码,并将其简化到现在(几乎)可以工作的程度,但我必须删除datasource对象。 这让我相信数据源中的数据有问题,我以前发现数据源的格式不正确。然而,我不确定这是否是问题所在。 startTime和EndTime来自服务器,并由ISO字符串转换而成,如下所示:

  fixAppointmentTimesFromServer(appointment: Appointment) {
    appointment.startTime = new Date(appointment.StartTimeServer);
    appointment.endTime =  new Date(appointment.EndTimeServer);
  }
this.userService.appointments.forEach( appt => {
  console.log(appt.startTime);
  console.log(typeof (appt.startTime));
  console.log(appt.endTime);
  console.log(typeof (appt.endTime));
});
如果我注销Appoints数组中的对象类型,如下所示:

  fixAppointmentTimesFromServer(appointment: Appointment) {
    appointment.startTime = new Date(appointment.StartTimeServer);
    appointment.endTime =  new Date(appointment.EndTimeServer);
  }
this.userService.appointments.forEach( appt => {
  console.log(appt.startTime);
  console.log(typeof (appt.startTime));
  console.log(appt.endTime);
  console.log(typeof (appt.endTime));
});
它将开始/结束时间显示为字符串,所以我想知道这是否是问题所在,或者这是否只是JS日期对象的更多谜团

或者,如果有人可以告诉我如何实际查找并进入日历模块进行调试,那么这可能会有所帮助

我添加了一个额外的:

    this.platform.ready().then( res => {
      ...
在ngOninit()的开始处

整个开始/结束时间的事情可能只是一条红鲱鱼。。。
有什么想法吗?谢谢

我在这里回答我自己的问题,因为我不想让其他人有和我一样的问题

我为ionic2日历安排日期的方式是不够的(显然),因为它需要一个基于毫秒的日期对象才能正常工作。不同的浏览器版本似乎运行方式不同

因此,我现在从服务器确定日期的方法如下:

  fixAppointmentTimesFromServer(appointment: Appointment) {
    const start = new Date(appointment.StartTimeServer);
    const end = new Date(appointment.EndTimeServer);
    appointment.startTime = new Date(Date.UTC(start.getFullYear(), start.getMonth(), 
    start.getDate(), start.getHours(), start.getMinutes()));
    appointment.endTime = new Date(Date.UTC(end.getFullYear(), end.getMonth(), end.getDate(), end.getHours(), end.getMinutes()));
  }
这将首先转换为字符串,然后再次转换为基于UTC(毫秒)的日期对象。这确实有效

但要注意一点:


我发现,当我没有从服务器获取数据,但使用已从Ionic存储中转换的数据时,它再次崩溃。这需要我在从存储中获取数据时重新转换数据。所以,对于JS来说,这并不是什么“有趣的服务器约会”,而且是一个完美的例子,说明了Javascript实际上是多么的完美

你在真正的安卓设备上试过哪个安卓版本?我的手机现在在安卓9上。Tbh,不知道以前是什么。操作系统中是否有一些我应该注意的变化?