简体   繁体   English

使用 jQuery datepicker 和 Angular 2 更改事件

[英]Change event with jQuery datepicker and Angular 2

I have some problems to catch the change event when I use the jQuery datepicker plugin and I'm trying to use the (change) method to catch the change but seems that when I'm using this plugin, angular can't catch it.当我使用 jQuery datepicker 插件时,我在捕捉更改事件时遇到了一些问题,我正在尝试使用 (change) 方法来捕捉更改,但似乎当我使用此插件时,angular 无法捕捉到它。

@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 ): ");
    }
}

I have removed the datepicker initialization and works fine, but when I use it again... don't works.我已经删除了 datepicker 初始化并且工作正常,但是当我再次使用它时......不起作用。

Someone can help me!有人可以帮助我!

Thanks so much.非常感谢。

You could implement the following directive:您可以实现以下指令:

@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);
      }
    });
  }
}

This way you will be able to catch a change event like this:通过这种方式,您将能够捕获这样的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);
  }
}

See this plunkr: https://plnkr.co/edit/TVk11FsItoTuNDZLJx5X?p=preview看到这个 plunkr: https ://plnkr.co/edit/TVk11FsItoTuNDZLJx5X ? p = preview

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM