writeValue не работает в ngOnChange, как ожидалось - PullRequest
0 голосов
/ 21 апреля 2020

Я создаю поле чисел 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)">

Я пропускаю какую-либо часть, вызвавшую эту ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...