如何从Ionic-2日历onchange()方法获取选定日期

时间:2018-06-25 11:47:23

标签: ionic-framework ionic2 ionic3 momentjs angular-calendar

我正在使用ion2-calendar。

这是我的html:

 <ion-calendar [(ngModel)]="date"
              (onChange)="onChange($event)"
              [type]="type"
              [format]="'YYYY-MM-DD'">
</ion-calendar>

这是ts中的变化:

onChange($event) {

      console.log("onchange event called");
      console.log(moment().format('DD-MM-YYYY'));  
    }

这是我的控制台:

onSelect event called
25-06-2018

但是无论我选择哪个日期,我总是会得到当前的月份和年份。仅日期值在更改。 它在控制台中显示所有日期的当前月份和年份。 有人可以告诉我如何从$ event对象获取dd-mm-yy格式的选定日期。

编辑-这就是我得到的console.log($event)

enter image description here

Moment {_isAMomentObject: true, _i: 1530297000000, _isUTC: false, _pf: {…}, _locale: Locale, …}
_d
:
Sat Jun 30 2018 00:00:00 GMT+0530 (India Standard Time) {}
_i
:
1530297000000
_isAMomentObject
:
true
_isUTC
:
false
_isValid
:
true
_locale
:
Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", ordinal: ƒ, _dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, …}
_pf
:
{empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -2, charsLeftOver: 0, …}
__proto__
:
Object

它显示正确的点击日期。 如果有人能告诉我如何从中提取日期,那就太好了。

4 个答案:

答案 0 :(得分:3)

$event中的

OnChange()是片刻对象。

您可以采用以下格式:$event.format('DD-MM-YYYY')

答案 1 :(得分:1)

moment()语句总是生成当前时间,如new Date()

您应该使用moment("1995-12-25")之类的语句或其他各种语句。

有关详细信息,请查看此moment.js docs


更新

首先要说结论

.html (不变)

<ion-content padding>
  <ion-calendar [(ngModel)]="date"
  (onChange)="onChange($event)"
  [type]="type"
  [format]="'YYYY-MM-DD'">
</ion-calendar>

.ts

onChange(event) {
  console.log(event.format('DD-MM-YYYY')); // For actual usage.
  console.log(moment(event).format('DD-MM-YYYY')); // the statement you might think about
}

上面的代码为您提供了想要的东西。

我想说的是,您不应使用moment(),而应使用moment(event)。因为moment()返回具有当前时间瞬间实例,而moment(event)返回具有时间{{1 }}携带。

答案 2 :(得分:1)

似乎候选发布版将输出事件更改为onChange而不是onChange,然后选择了select而不是onSelect。尝试使用此:

<ion-calendar [(ngModel)]="date" (change)="onChange($event)" [format] =“'YYYY-MM-DD'”> `

答案 3 :(得分:-2)

<ion-calendar [(ngModel)]="date" (change)="onChange($event)"  [type]="type" 
   [format]="'YYYY-MM-DD'">
</ion-calendar>
    
date;
type: "string";
onChange(event) {
    console.log(moment(this.date._d).format("YYYY-MM-DD"));
}