Javascript 角材料日期选择器+;矩,序列化后端的矩对象?
我有一个日期选择器,它使用带有区域设置的矩适配器,所有日期都可以,但我无法在后端转换它们。我使用Javascript 角材料日期选择器+;矩,序列化后端的矩对象?,javascript,angular,momentjs,angular-reactive-forms,angular-moment,Javascript,Angular,Momentjs,Angular Reactive Forms,Angular Moment,我有一个日期选择器,它使用带有区域设置的矩适配器,所有日期都可以,但我无法在后端转换它们。我使用formGroup.value 在将其发送到后端(通过angular 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
formGroup.value
在将其发送到后端(通过angular 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 },
但在后端记录它时,看起来像:
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函数发送
编辑:当前的解决方法相当粗糙/没有准备好:
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);
我需要将其更改回其他对象的某个时刻,即他们将在以后的所有日期停止工作。在发送到后端之前,您可以使用
格式
momentDate.format('YYYY-MM-DD')
我通常做的是
momentDate.utc().toISOString()
我考虑过这一点,但问题是我的表单是可重用的,一些控件可能/可能不在表单组中。如果我必须从头开始重建整个对象,我必须围绕它的灵活性引入逻辑,并对其进行破解,我想知道是否还有其他可能first@MichaelB对我来说,表单驻留在组件中,格式化在发送http之前在服务中完成,或者在模型构造函数中完成。如果您真的想得到一个字符串作为表单值,您也可以编写自己的自定义适配器。