Ich habe eine einfache Angular 2-Direktive, die den Eingabewert eines Textfelds ändert. Beachten Sie, dass ich den modellgesteuerten Formularansatz verwende.Angular 2 Input Directive Ändern des Formularsteuerwerts
@Directive({
selector: '[appUpperCase]'
})
export class UpperCaseDirective{
constructor(private el: ElementRef, private control : NgControl) {
}
@HostListener('input',['$event']) onEvent($event){
console.log($event);
let upper = this.el.nativeElement.value.toUpperCase();
this.control.valueAccessor.writeValue(upper);
}
}
Das dom wird ordnungsgemäß aktualisiert, das Modell wird jedoch nach jedem weiteren Tastendruck aktualisiert. Werfen Sie einen Blick auf die plnkr
Awesome! Danke für die Erklärung. –
Wie steht es mit der Zeichenposition? Die Tastenkombination sendet die Zeichenposition an das Ende der Eingabe. – Skyler
@silntsod Haben Sie eine Idee, wie Sie es mit Template-gesteuerten Formular verwenden? mit ngModel – Vishal