Jquery ui AngularJS 2输入字段不更新Jquery日期选择器日期更改的ngModel
我对AngularJS2组件中的jQueryUIDatePicker有问题 它显示从日期日历更改的日期,但不更新基础ngModel:dateSelectedJquery ui AngularJS 2输入字段不更新Jquery日期选择器日期更改的ngModel,jquery-ui,angular,datepicker,Jquery Ui,Angular,Datepicker,我对AngularJS2组件中的jQueryUIDatePicker有问题 它显示从日期日历更改的日期,但不更新基础ngModel:dateSelected dateSelected: string = ''; 此处日期选择器输入字段为: <input type="text" class="form-control" [(ngModel)]="dateSelected" name='datepicker1' id='datepicker1' placeholder="Select a d
dateSelected: string = '';
此处日期选择器输入字段为:
<input type="text" class="form-control" [(ngModel)]="dateSelected" name='datepicker1' id='datepicker1' placeholder="Select a date"/>
另一方面,如果我通过jqueryval读取所选日期,它的工作方式很好
var selectedDateInPicker = $("#datepicker1").val();
$("#datepicker2").val(selectedDateInPicker);
下面是代码插入器:
你能帮忙吗?更新 也许您想编写自定义指令来实现
ControlValueAccessor
:
declare var $: any;
@Directive({
selector: '[datepicker]',
providers: [{
provide: NG_VALUE_ACCESSOR,useExisting:
forwardRef(() => DatePickerDirective),
multi: true
}]
})
export class DatePickerDirective implements ControlValueAccessor {
value: string;
constructor(protected el: ElementRef) {}
ngAfterViewInit(){
$(this.el.nativeElement).datepicker({
changeMonth: true,
yearRange: "1:100", // you can pass it as @Input options
changeYear: true
}).on('change', e => this.onModelChange(e.target.value));
}
onModelChange: Function = () => {};
onModelTouched: Function = () => {};
writeValue(val: string) : void {
this.value = val;
}
registerOnChange(fn: Function): void {
this.onModelChange = fn;
}
registerOnTouched(fn: Function): void {
this.onModelTouched = fn;
}
}
原产地
我认为您可以通过使用以下方法来实现:
$(selector-ng-datepicker).datepicker({
changeMonth: true,
yearRange: "1:100",
changeYear: true
}).on('change', e => this.dateSelected = e.target.value);
更新 也许您想编写自定义指令来实现
ControlValueAccessor
:
declare var $: any;
@Directive({
selector: '[datepicker]',
providers: [{
provide: NG_VALUE_ACCESSOR,useExisting:
forwardRef(() => DatePickerDirective),
multi: true
}]
})
export class DatePickerDirective implements ControlValueAccessor {
value: string;
constructor(protected el: ElementRef) {}
ngAfterViewInit(){
$(this.el.nativeElement).datepicker({
changeMonth: true,
yearRange: "1:100", // you can pass it as @Input options
changeYear: true
}).on('change', e => this.onModelChange(e.target.value));
}
onModelChange: Function = () => {};
onModelTouched: Function = () => {};
writeValue(val: string) : void {
this.value = val;
}
registerOnChange(fn: Function): void {
this.onModelChange = fn;
}
registerOnTouched(fn: Function): void {
this.onModelTouched = fn;
}
}
原产地
我认为您可以通过使用以下方法来实现:
$(selector-ng-datepicker).datepicker({
changeMonth: true,
yearRange: "1:100",
changeYear: true
}).on('change', e => this.dateSelected = e.target.value);
@yurzui是一个字段的解决方案,可以用其他方式处理(例如模糊),但有没有角度方式的通用解决方案或标准解决方案。角度方式是不要使用jquery。我为多字段表单@yurzui添加了解决方案是的,我理解angular way不建议使用jquery,但在业务需要时,我们必须添加一些现有的工作控件,如jquery日期选择器、google地图自动完成这些在angular 2中还不可用,所以我必须使用。感谢@yurzui这是一个字段的解决方案,可以用其他方式处理(例如模糊),但是有没有角度方式的通用解决方案或标准解决方案。角度方式是不要使用jquery。我为多字段表单@yurzui添加了解决方案是的,我理解angular way不建议使用jquery,但在业务需要时,我们必须添加一些现有的工作控件,如jquery日期选择器、google地图自动完成这些在angular 2中还不可用,所以我必须使用。谢谢