Angular 2 ngModel can';t跟踪/绑定jQuery Datepicker小部件/输入元素中的值,为什么?

Angular 2 ngModel can';t跟踪/绑定jQuery Datepicker小部件/输入元素中的值,为什么?,angular,jquery-ui-datepicker,angular2-ngmodel,Angular,Jquery Ui Datepicker,Angular2 Ngmodel,这个输入元素是一个Datepicker小部件。日期属性值(例如“09/09/1999”)加载到模板视图中,并且在Datepicker日历中选择了相同的日期,按预期工作。从组件到模板的绑定正常 但当我在Datepicker交互式日历中更改日期时,所选日期将显示在输入框中,但组件中的日期属性不会更新。当我使用(ngSubmit)=‘search(form.value)’时,表单对象form.date的值和以前一样 --template--- <form #form='ngForm' (

这个输入元素是一个Datepicker小部件。日期属性值(例如“09/09/1999”)加载到模板视图中,并且在Datepicker日历中选择了相同的日期,按预期工作。从组件到模板的绑定正常

但当我在Datepicker交互式日历中更改日期时,所选日期将显示在输入框中,但组件中的日期属性不会更新。当我使用(ngSubmit)=‘search(form.value)’时,表单对象form.date的值和以前一样

--template---    
<form #form='ngForm' (ngSubmit)='search(form.value)'>    
<input type="text" id="datepicker" [(ngModel)]="date" name="date">    
<button type="submit"> click </button>
</form>

--component---
export class AppComponent {    
    public date = "09/09/1999";    
    search(form: any) {
        console.log("date:" + form.date);   // date: 
    }    
}
--模板--
点击
--组成部分---
导出类AppComponent{
公开日期=“09/09/1999”;
搜寻(表格:任何){
console.log(“日期:+form.date);//日期:
}    
}
是的,我可以使用本地模板变量#date将输入值传递给组件,如(ngSubmit)=“search(date.value)”。但对于多输入Datepicker,我可以连接局部变量值并将其参数传递给search()


我想知道为什么ngModel无法跟踪datepicker输入中的更改,以及更新组件属性或form.value的最佳方法是什么

我不能建议您让jQuery datepicker使用Angular,因为这需要对核心jQuery或核心Angular进行重大重写

对于ngModel无法读取jQuery UI对象的原因的解释,请使用


ngModel依赖于对本机DOM对象的访问—jQuery将这些对象抽象为自己的自定义jQuery对象。Angular没有处理此jQuery对象的API。

为什么要将jQuery与Angular一起使用?jQuery是一个令人头痛的问题——它将本机DOM对象包装在自定义包装器中,这会让JS框架(如Angular)陷入噩梦。如果您需要一个日期选择器,您可以使用许多ng库中的一个。我之所以使用jQuery,是因为我预期的日期选择器ui功能和样式在jQuery日期选择器中非常可用,但在其他角度日期选择器(如ngx引导)中却不可用。我还没有足够的技能去理解jQuery和JS框架(比如angular)是如何完成事情的。但如果我仍然想使用jQuery,您有什么建议来解决这个问题,或者解释为什么ngModel不能读取datepicker输入值。谢谢你的评论。