У меня есть средство выбора даты, использующее адаптер момента с локалью, с датами все в порядке, но я не могу преобразовать их на бэкэнде. Я получаю это из формы, используя 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 },
с пустыми значениями и, конечно же, 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);
Мне нужно изменить его обратно на объект момента, иначе они перестанут работать для всех будущих дат.