【发布时间】:2018-02-13 12:48:50
【问题描述】:
我正在使用 Angular 4 和反应形式,momentjs 和 primeng calendar 我想使用 setValue 并尝试在包含日期的反应形式字段上使用 patchValue。此日期是通过primeng 日历创建的。
purchaseDate: Sat Sep 02 2017 00:00:00 GMT+0100 (GMT Daylight Time)
我使用这个“日期”来做几件事,然后我使用momentjs 将日期转换为干净的格式,以便后端接受(即YYYY.MM.DD)使用@987654330 @
但是,当我运行 .setValue 时,我收到以下控制台错误 ERROR Missing number at position 0 并且无法弄清楚原因。
// convert the date
let newDate = moment(this.form.get('purchaseDate').value).format('YYYY.MM.DD');
// let newDate = moment(this.form.get('purchaseDate')).format('YYYY.MM.DD');
// with or without .value - display the same below (2017.09.01)
console.log(newDate); // 2017.09.01
this.form.get('purchaseDate').setValue(newDate);
// if I create a seperate (empty) reactiveForms field to test against
this.form.get('testField').setValue(newDate) // this works fine
我已将问题追溯到我尝试设置/修补primeng日历值时 - 由于某种原因不喜欢被更改。
已更新格式
在 setValue 上发生的问题接缝现在出现以下错误
Unexpected literal at position 2 at viewWrappedDebugError
【问题讨论】:
-
您需要传入 formGroup 值,我认为 moment 不会接受单个 y。
moment(this.form.get('purchaseDate').value).format('yy.MM.dd'); -
Moment
format不接受小写的y作为年份标记,请改用Y、YY或YYYY。此外请注意,小写的dd标记代表星期几(SuMo...FrSa),如果你想使用大写的DD一个月中的哪一天 (0102...3031) -
@JayChase & @VincenzoC 嗨,谢谢 - 我已经根据你的建议更新了代码,但现在收到了
ERROR Error: Unexpected literal at position 2 -
仅供参考 @JayChase 省略
.value没有区别,我正在记录newDate并且无论是否有.value都会出现同样的情况 -
您是否尝试将
newDate设为moment 对象(let newDate = moment(this.form.get('purchaseDate').value)),然后将purchaseDate的值设置为Javascript 日期(使用momenttoDate():this.form.get('purchaseDate').setValue(newDate.toDate());)?跨度>
标签: javascript angular momentjs primeng angular-reactive-forms