Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui AngularJS 2输入字段不更新Jquery日期选择器日期更改的ngModel_Jquery Ui_Angular_Datepicker - Fatal编程技术网

Jquery ui AngularJS 2输入字段不更新Jquery日期选择器日期更改的ngModel

Jquery 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

我对AngularJS2组件中的jQueryUIDatePicker有问题

它显示从日期日历更改的日期,但不更新基础ngModel:dateSelected

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中还不可用,所以我必须使用。谢谢