2016-04-25 2 views
2

У меня есть некоторые проблемы, чтобы поймать событие изменения, когда я использую плагин jQuery datepicker, и я пытаюсь использовать метод (change), чтобы поймать изменение, но кажется, что когда я используя этот плагин, угловые не могут его поймать.Изменить событие с помощью jQuery datepicker и Angular 2

@Component({ 
    selector: 'foo-element', 
    template: '<input type="text" (change)="checkDates($event)" id="foo_date_picker" class="datepicker">' 
}) 

export class FooComponentClass implements AfterViewInit { 

    ngAfterViewInit():any{ 
     $('#end_day').datepicker(); 
    } 

    private function checkDates(e){ 
     console.log("Please, catch the change event): "); 
    } 
} 

Я удалил инициализацию datepicker и отлично работает, но когда я использую его снова ... не работает.

Кто-то может мне помочь!

Большое спасибо.

+0

в Jquery DatePicker будет переопределять событие изменения элемента с его собственной логикой, обратитесь к http://stackoverflow.com/questions/27506111/jquery-datepicker-change-event-trigger-an d-entries-default-change-event – Ripun

+0

Привет, спасибо за ваш ответ, но проблема в том, что когда я пытаюсь скомпилировать файл, я показываю ошибку, подобную этой: «Литерал объекта может указывать только известные свойства и« onSelect », не существует в типе «DatepickerOptions». По этой причине я не могу скомпилировать исходный код. –

ответ

1

Вы могли бы реализовать следующую директиву:

@Directive({ 
    selector: '[datepicker]' 
}) 
export class DatepickerDirective { 
    @Output() 
    change:EventEmitter<string> = new EventEmitter(); 

    constructor(private elementRef:ElementRef) { 
    } 

    ngOnInit() { 
    $(this.elementRef.nativeElement).datepicker({ 
     onSelect: (dateText) => { 
     this.change.emit(dateText); 
     } 
    }); 
    } 
} 

Таким образом, вы сможете поймать change событие так:

@Component({ 
    selector: 'app', 
    template: '<input type="text" id="end_day" (change)="checkDates($event)" class="datepicker" datepicker>', 
    directives: [ DatepickerDirective ] 
}) 
export class App implements AfterViewInit { 
    checkDates(e){ 
    console.log("Please, catch the change event): "+e); 
    } 
} 

Посмотреть этот plunkr: https://plnkr.co/edit/TVk11FsItoTuNDZLJx5X?p=preview

+0

Ваш ответ не работает, но вы научили меня другому способу использования угловых компонентов 2! Спасибо! –