Я создаю поле чисел c с использованием this.numCtrl.valueAccessor.writeValue и this.numCtrl.control.setValue с методом emitModelToViewChange.
Когда пользователь вводит 10000
Я ожидаю, что форма отобразит 10 000, а значение формы будет 10000
Она прекрасно работает в фокусе ввода и функции размытия
public onInputFocus(): void {
this.numCtrl.valueAccessor.writeValue(this.controlName.value);
}
public onInputBlur(value: any): void {
this.numCtrl.valueAccessor.writeValue(decimalPipe.transform(value, '1.2-2'));
this.numCtrl.control.setValue(value, {emitModelToViewChange: false});
}
Но в ngOnChanges
Форма всегда показывает 10000 вместо 10 000
public ngOnChanges(change: SimpleChanges): void {
this.controlName.registerOnChange((value: any) => {
this.numCtrl.valueAccessor.writeValue(decimalPipe.transform(value, '1.2-2'));
this.numCtrl.control.setValue(value, {emitModelToViewChange: false});
});
}
My HTML:
<input #input matInput #numCtrl="ngForm" autocomplete="off" [formControl]="controlName (focus)="onInputFocus()" (blur)="onInputBlur(input.value)">
Я пропускаю какую-либо часть, вызвавшую эту ошибку?