这在localhost上有效,但在我得到ERROR TypeError: n.endOf is not a function
的生产环境中无效
import * as moment from 'moment';
changeMaxDate(maxTime: moment.Moment) {
if (maxTime) {
return maxTime.endOf('day').toISOString();
}
}
我已经阅读了所有其他有关Moment的问题和文档,但无济于事。
我已经尝试过import moment from 'moment';
(这也可行)和其他方法都没有成功
Moment.js 2.24.0
TS 3.5.3
角度8.2.3
<input matInput
[matDatepicker]="maxTime"
[(ngModel)]="data.maxTime"
(ngModelChange)="changeMaxDate(data.maxTime)"
placeholder="{{ 'yyyy-mm-dd' | translate }}">
<mat-datepicker-toggle matSuffix [for]="maxTime"></mat-datepicker-toggle>
<mat-datepicker #maxTime></mat-datepicker>
从本地主机中的日期选择器获取的maxTime
Moment {_isAMomentObject: true, _i: {…}, _isUTC: false, _pf: {…},
_locale: Locale, …}
_d: Mon Nov 04 2019 23:59:59 GMT+0100 (Central European Standard Time)
__proto__: Object
_i: {year: 2019, month: 10, date: 4}
_isAMomentObject: true
_isUTC: false
_isValid: true
_locale: Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", _dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: ƒ, …}
_pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -1, charsLeftOver: 0, …}
__proto__: Object
在生产中是一个字符串
Mon Nov 04 2019 00:00:00 GMT+0100 (Central European Standard Time)
答案 0 :(得分:0)
您要传递什么数据作为参数?就您而言,我相信moment.Moment的类型为 any 。在这种情况下,即使您将传递一些空对象{}或Date,条件if(maxTime)也会返回true。但是该对象没有定义 endOf 函数。
您可以这样做:
changeMaxDate(maxTime: moment.Moment) {
if (maxTime && typeof maxTime.endOf === 'function') {
return maxTime.endOf('day').toISOString();
}
}
答案 1 :(得分:0)
在您的app.module
中,将如下所示的MomentDateAdapter
添加到您的提供者中,以便将实际时间与matDatepicker一起使用
{provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]},
{provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS},
并从@angular/material
答案 2 :(得分:0)
将[(ngModel)]
和(ngModelChange)
一起使用的快速提示可能并没有完全按照您的意图进行,因为[(ngModel)]
已经绑定了更改。 https://angular.io/guide/template-syntax#two-way-binding-
此外,我认为输出的格式不符合您的功能。