2016-08-23 94 views
1

我有一个绑定到模型中的值的输入。Angular 2 - ngModel没有从datepicker更新

 <input type="text" class="form-control" [(ngModel)]="currentDate"> 

我有,我用它来填充这个输入一个日期选择器。当通过日期选择器选择一个值时,输入似乎没有更新模型,因为它没有向代码中更远的位置触发管道。

但是,如果我手动输入到输入字段中,那么ngModel确实会更新,因为管道会根据新值启动过滤。我为输入绑定了一个'on change'处理程序,在输入时或使用datepicker时触发。

$('#datepicker').datepicker().on('changeDate', function(e){ 
     //Fires on change 
    }) 

有手动触发ngModel改变事件的方式,还是有更优雅的解决方案别人知道的?

+1

是否'changeDate'火灾时你从datepicker更改日期?你有没有尝试从'changeDate'事件设置currentDate? –

+0

使用日期选取器事件来纠正值确实有效。感觉有点笨拙不得不手动绑定,但如果它的工作,它的作品。 感谢马杜! –

回答

0

使用datepicker自己的事件我能够手动更新模型值。

AttachDateChangeHandler(): void { 
    $('#datepicker').datepicker().on('changeDate', (e)=> { 
     this.currentDate = e.date.***() 
    }) 
} 

感谢Madhu Ranjan的建议。

+0

e.date中的*是什么***()?我在这里得到一个错误 – Brett

+0

@Brett你会想要将它转换为你想要的日期格式。我使用e.date.toLocaleDateString() –

1

你可以做这种方式,引发Angular2的变化检测..

看到这个plunker

setTimeout(() => { 
    $('#myinput').val("changed.."); 

    var evt = new Event("input", {"bubbles":true, "cancelable":false}); 

    $('#myinput')[0].dispatchEvent(evt); 

}, 5000);