Ionic Native Date Picker无法在Android上运行

问题描述 投票:1回答:3

我正在使用IonicNative页面的Cordova插件。

我使用两个不同的选择,一个选择日期,另一个选择时间。两者都可以在iOS上运行良好,但在Android上我有两个问题。

  1. 在日期选择器上没有边界,因此无法选择旧日期,即使我确实在控制器中传递了它。 showDatePicker(){ this.datePicker.show({ date: this.dateChosen, mode: 'date', minDate: this.today, maxDate: this.maxDay, allowOldDates: false }).then( date => { this.dateChosen = m(date); }, err => alert('Error occurred while getting date: ' + err) );} 我使用moment.js进行日期/时间生成,所以this.dateChose = moment();它不是问题的根源,this.todaythis.maxDay也是如此

我尝试使用javascript的Date(),但它没有改变任何东西,在Android上我仍然可以选择我想要的任何日期

  1. 更重要的问题是Time Picker在Android上无法运行 showTimePicker(){ this.datePicker.show({ date: this.timeChosen, mode: 'time', is24Hour: true, minuteInterval: 15, allowOldDates: false }).then( date => { this.timeChosen = m(date); }, err => alert('Error occurred while getting date: ' + err) );}

在iOS上我没有问题,它工作得很好,但在Android上它变为错误的状态,错误的消息是For input string "2017-07-10T13:10.24.213Z"。我更改了输入以将其传递给unix时间,但它只是更改了错误消息。谁知道该怎么办?

cordova ionic-framework ionic2 ionic3 ionic-native
3个回答
4
投票

我有一个有用的答案:)

  import { DatePicker } from '@ionic-native/date-picker'
  //...
  constructor(public datePicker: DatePicker) {}
  //...
  public toPickDateTime() {

    let minDays = 2
    let maxDays = 365

    this.datePicker
      .show({
        mode: 'datetime',
        date: this.getNowAndAdd(2, true),
        minDate: this.getNowAndAdd(2),
        maxDate: this.getNowAndAdd(5),
        is24Hour: true,
        androidTheme: this.datePicker.ANDROID_THEMES.THEME_HOLO_DARK,
      })
      .then(
        date => console.log(date),
        err => console.log(err)
      );
  }

  private getNowAndAdd(nbDays, forceDate = false): any
  {
    var date = new Date(new Date().getTime() + (nbDays * 24 * 3600 * 1000))

    return (this.platform.is("android") && !forceDate) ? date.getTime() : date
  }

你需要知道minDate和maxDate被“窃听”,没有人不关心^^。在Android上你需要传递一个整数,但在ios上你需要传递一个日期

我说这是一个错误,因为“离子”和“cordova”必须在一个完美的世界中进行解析。

因为它不'这个技巧可以解决问题。


2
投票

好的,所以我通过完全删除cordova插件解决了它,而是使用Ionic自己的组件ion-datetime来解决这两种情况。现在它在Android上显示滑块而不是日历,但我很好。

同时添加限制,如最小,最大日期很容易,动态可行,并在Ionic Docs上有详细记录


0
投票

要使用ionic-native/date-picker插件,您需要在设备上运行项目,因为插件使用了cordova。如果您使用ionic serve来运行项目,您在控制台中看到如下消息:

Ionic Native: tried calling DatePicker.show, but Cordova is not available. Make sure to a) run in a real device or simulator and b) include cordova.js in your index.html
© www.soinside.com 2019 - 2024. All rights reserved.