我在我的 Angular 2 webapp 中使用响应式表单,并且在将日期分配给 ngbDatepicker(ngbootstrap 1 alpha 6)时遇到了麻烦。我的对象有一个日期对象,例如:
var myObject = {date: new Date(1, 9, 2016)};
在我的反应形式中,它的配置如下:
input.form-control(name='date', ngbDatepicker, #date="ngbDatepicker", placeholder='jj.mm.aaaa', formControlName='date', type="text")
我像这样修补表格:
this.form.patchValue({myObject: myObject});
问题是ngbDatepicker
采用以下结构的日期:
{day: DD, month: MM, year: YYYY}
我找到了一种解决方法:
this.form.controls.myObject.controls.date.valueChanges
.map((value) => {
if(value) {
if (typeof value.getMonth === 'function') {
this.form.controls.myObject.patchValue({
date: {
day: value.getUTCDay(),
month: value.getUTCMonth(),
year: value.getUTCFullYear()
}
});
}
}
return value;
})
.subscribe((value) => {
});
一切都按预期工作(只要表格被修补,日期就会更新),但它太冗长(18行代码)而且我的表格有十几个日期!
所以我的问题是我能用更短的解决方案达到同样的结果吗?