我正在使用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)
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
它显示正确的点击日期。 如果有人能告诉我如何从中提取日期,那就太好了。
答案 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"));
}