Ich bin neu in Angular2.
Ich versuche, JQuery ui Datepicker in angular2 zu implementieren.
JQuery UI Datepicker in angular2
Ich habe eine DatePicker-Direktive geschrieben, dort habe ich Datepicker aktiviert. Hier kann ich das Datum auswählen, aber es ist schwierig, das ausgewählte Datum an die Elternkomponente zu senden.
um dies zu überwinden Ich habe ein Objekt auf Fenster-Objekt erstellt und übergeben Komponente Verweis auf das Objekt. Von dort rufe ich die Komponentenfunktion auf.
Ich denke, das ist keine Best Practice zu tun.
Kann mir jemand auf die richtige Weise helfen.
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);
}
});
}
}
Hier ich nicht window.angularComponentRef.component Objekt verwenden möchten. Da es nur die Referenz im globalen Objekt speichert. Das ist nicht gut für eine Anwendung.
Ich denke, es ist eine einfache Antwort. Kannst du mir irgendwelche anderen Möglichkeiten vorschlagen, dasselbe auf eckige Weise zu tun? –
Es gibt keine angularspezifische Methode, um so etwas zu tun. Das 'nativeElement' mit' ElementRef' zu erfassen, ist die einzige Sache, die man beachten sollte, wenn man in diesen Situationen Elemente an externe Bibliotheken übergibt, und genau das macht man. Manchmal ist die einfache Antwort die richtige Antwort, keine Notwendigkeit zu komplizieren. – hotforfeature
danke für Ihre Bestätigung. :) –