Mam niestandardową dyrektywę, która akceptuje tylko numer. Kiedy wprowadzam 1.2, jest dobrze. Ale kiedy wpisuję tylko 1. Chcę wymazać wprowadzony 1. na rozmycie. Próbowałem na kilka sposobów, aby ustawić wartość pustego ciągu wewnątrz onBlur
, ale wciąż nie ma szczęścia. Oto fragment kodu:Angular 2 - Zaktualizuj ngModel wewnątrz niestandardowej dyrektywy @HostListener ("rozmycie")
@Output() ngModelChange = new EventEmitter();
constructor(el: ElementRef, public model: NgControl){
//Instead of NgControl, I have also tried the NgModel but it did not work
this.el = el.nativeElement;
}
@HostListener('blur', ['$event']) onBlur($event){
if(isNaN(this.el.value.replace(/(,)/g, '')) || this.el.value[this.el.value.length - 1] === '.' || this.el.value[this.el.value.length - 1] === '-'){
this.el.value = '';
this.model.control.updateValue('');
this.model.viewToModelUpdate('');
this.ngModelChange.emit('');
}
}
Spowoduje to usunięcie 1. w polu wejściowym. Ale kiedy wydrukuję wartość ngModel
, która przechowuje dane, wartość to 1
W takim przypadku chcę ustawić wartość ngModel na pusty ciąg znaków. Jak mogę to zrobić w rozmycie?
Dziękujemy!
Wolę iść z 'this.ngModelChange.emit (" zdarzenie $) ", jak w mojej odpowiedzi. dispatchEvent może działać, ale jest częścią kodu testowego, dlatego uważam NgModelChange za właściwy sposób na obsłużenie tego. – Manuel