我有一个使用时间适配器和区域设置的日期选择器,所有日期都可以,但是我无法在后端进行转换。我使用formGroup.value
在将其发送到后端之前(通过有角度的firebase),它看起来像:
from: Moment
_d: Sat Jul 06 2019 01:00:00 GMT+0100 (British Summer Time) {}
_i: {year: 2019, month: 6, date: 6}
_isAMomentObject: true
_isUTC: true
_isValid: true
_locale: Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", ordinal: ƒ, _dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, …}
_offset: 0
_pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -1, charsLeftOver: 0, …}
__proto__: Object
但是在后端记录它,看起来像:
from:
> { _isAMomentObject: true,
> _i: [Object],
> _isUTC: true,
> _pf: [Object],
> _locale: [Object],
> _d: {},
> _isValid: true,
> _offset: 0 },
的值为空,当我尝试从中获取任何日期时,当然会引发TypeErrors。
我正在通过@angular/fire
作为httpCallable函数发送它。
编辑:当前变通办法是相当hacky / unpreffered:
let oldFrom: moment.Moment = this.from.value;
let oldTo: moment.Moment = this.to.value;
this.ReportForm.controls.from.setValue(oldFrom.toISOString());
this.ReportForm.controls.to.setValue(oldTo.toISOString());
this.submitted.emit(this.ReportForm.value);
this.ReportForm.controls.from.setValue(oldFrom);
this.ReportForm.controls.to.setValue(oldTo);
我需要将其改回其他对象,否则他们将在以后的所有日期停止工作。
答案 0 :(得分:0)
您可以在发送到后端之前使用format
。
momentDate.format('YYYY-MM-DD')
我通常要做的是
momentDate.utc().toISOString()