【发布时间】:2016-10-07 09:13:48
【问题描述】:
我是 Angular2 的新手。
我正在尝试在 angular2 中实现 JQuery ui datepicker。
我写了一个 datePicker 指令,在那里我启用了 datepicker。在这里我可以选择日期,但很难将所选日期发送到父组件。
为了克服这个问题,我在窗口对象上创建了一个对象并将组件引用传递给该对象。从那里我正在调用组件函数。
我觉得这不是最佳做法。
有人可以帮助我以正确的方式做事吗?
import { Directive, ElementRef, Input, NgZone,HostListener,Output,EventEmitter } from '@angular/core';
declare var $:any;
@Directive({
selector: '[uiDatePicker]',
})
export class UiDatePickerDirective {
@Input('uiDatePicker') setDate: string;
@Output() onSelectDate = new EventEmitter();
private el: HTMLElement;
constructor(el: ElementRef,public zone:NgZone) {
this.el = el.nativeElement;
window.angularComponentRef = {
zone: this.zone,
component: this
};
}
doEmitDate(dateText:string){
this.onSelectDate.emit(dateText);
}
ngOnInit() {
$(this.el).datepicker({
onSelect: function(dateText:string) {
window.angularComponentRef.component.doEmitDate(dateText);
}
});
}
}
这里我不喜欢使用 window.angularComponentRef.component 对象。因为它只是将引用存储在全局对象中。这对应用程序不利。
【问题讨论】:
标签: angular angular2-directives