I am trying to create my own Angular 2 directive for jQuery UI Datepicker. I have seen several different approaches on the Internet and in SO, but no one is reaching the goal that I want. So this is the code that I still have:
import {Directive, ElementRef, Input, forwardRef} from '@angular/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from "@angular/forms"; declare var $:any; @Directive({ selector: '[date-picker]', providers: [{ provide: NG_VALUE_ACCESSOR,useExisting: forwardRef(() => DatePickerDirective), multi: true }] }) export class DatePickerDirective implements ControlValueAccessor { private value: string; @Input('changeMonth') changeMonth:boolean = true; @Input('changeYear') changeYear:boolean = true; constructor(private el: ElementRef) { } ngAfterViewInit(){ $(this.el.nativeElement).datepicker({ changeMonth: this.changeMonth, yearRange: "1:100", changeYear: this.changeYear }).on('change', e => this.onChange(e.target.value)); } onChange: Function = () => {}; onTouched: Function = () => {}; writeValue(val: string) : void { this.value = val; } registerOnChange(fn: Function): void { this.onChange = fn; } registerOnTouched(fn: Function): void { this.onTouched = fn; } }
What happens is that even when I select a date (picker) or type it directly in the input field, it does not update the "touched" property.
Do you have any ideas for fixing it?
source share