I'm using reactive forms in my Angular 2 webapp and I'm having troubles assigning the date to ngbDatepicker (ngbootstrap 1 alpha 6). My object has a date object such as:
var myObject = {date: new Date(1, 9, 2016)};
and in my reactive form, it is configured as follow:
input.form-control(name='date', ngbDatepicker, #date="ngbDatepicker", placeholder='jj.mm.aaaa', formControlName='date', type="text")
and I patch the form like this:
this.form.patchValue({myObject: myObject});
The problem is that ngbDatepicker
take the date with the following structure:
{day: DD, month: MM, year: YYYY}
I have found a workaround that does:
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) => {
});
And everything works as expected (the date gets updated whenever form gets patched) but it is way too verbose (18 lines of code) and my form has a dozen of dates!
So my question is can I achieve the same result with a much shorter solution?