Я использую реактивные формы в своем Angular 2 webapp, и у меня возникают проблемы с назначением даты ngbDatepicker (ngbootstrap 1 alpha 6). Мой объект имеет объект даты, такие как:Короткий путь присвоить дату ngbDatepicker
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 строк кода), и моя форма имеет дюжина дат!
Итак, мой вопрос: могу ли я достичь того же результата с гораздо более коротким решением?
переместить код в функцию и вызвать ее на карте. –
@JohnBaird Ну ... я ожидал более творческого решения с помощью директивы или трубы! – ncohen