2017-06-22 3 views
0

Da ich keine angular4 Clockpickers finden konnte, entschied ich mich, die jQuery zu verwenden, aber ich kann die ausgewählte Zeit nicht an eine Variable binden und ich brauche, damit ich sie auf meiner Typoskript-Komponente manipulieren kann .. hier ist mein CodeWie bind ClockPicker Wert

dass console.log(this.value) zeigt mir den ausgewählten Wert, aber ich kann es nicht zu meinen deklarierten Variablen zuweisen.

Komponente:

ngAfterViewInit() { 
    jQuery("#timePicker").clockpicker({ placement: 'bottom', donetext: 'Done', autoclose: true, vibrate: true, }) 
    .find('input').change(function (a) { 
     console.log(a); 
     console.log(this.value) 
    }); 
} 

HTML:

<div class="timeHolder" 
    id="timePicker" 
    data-placement="right" 
    data-align="top" 
    data-autoclose="true"> 
    <input type="text" 
     [(ngModel)]="setTime" 
     (input)="valuechange($event)" /> 
    {{setTime}} 

Antwort

0

Wenn Sie eine Funktion mit der Funktion Schlüsselwort definieren ändert es den Wert von this. Stattdessen sollten Sie wie empfohlen @ developer033 Pfeilfunktionen verwenden, die den Wert this nicht ändern. Sie sollten den folgenden Code verwenden:

ngAfterViewInit() { 
    jQuery("#timePicker").clockpicker({ placement: 'bottom', donetext: 'Done', autoclose: true, vibrate: true, }) 
    .find('input').change((e) => { 
     console.log(e); 
     console.log(e.currentTarget.value); 
     // use that to access angular variables 
     this.setTime = e.currentTarget.value; 
    }); 
} 
+0

IMO, es ist besser, 'Pfeil-Funktionen' zu verwenden. – developer033

+0

@ developer033 Einverstanden. Bevor ich den jquery Code nicht ändern wollte, aber jetzt merke ich, dass es viel besser ist, jquery Code zu ändern – Dhyey

+0

@Dhyey danke – Thendo