Angular: сброс входного значения до предыдущего - PullRequest
0 голосов
/ 27 января 2019

В Angular 2+, можно ли программно сбросить значение входа к его предыдущему значению?

У меня есть выпадающий список «Выбор», после чего при выборе значения мне нужно сбросить его значение к предыдущему., если определенная проверка завершится неудачей.

Как мне добиться того же, используя ngModel (шаблон формы) и formControl (реактивная форма)?(Просто нужно знать, возможно ли это обоими подходами).

Я выяснил, что если мы поместим событие ngModelChange перед ngModel в теге select в шаблоне, то в событии ngModelChange мы получим значениеngModel до изменения.Справка: https://github.com/angular/angular/issues/11234

Но я думаю, что этот подход не является кратким и иногда может сбивать с толку.

1 Ответ

0 голосов
/ 27 января 2019

Да, это возможно с использованием подхода Reactive form и с оператором rxjs попарно .

Подписаться на formControl valueChanges в вашем компоненте с операторами rxjs pairwise и startWith

Пример кода:

this.myForm.controls['control1'].valueChanges
  .pipe(startWith(1), pairwise()).subscribe(
    ([prevValue, selectedValue]) => {
      console.log(prevValue); // previous value
      console.log(selectedValue); // new value
    }
 );
} 

Вы также можете проверить работоспособность DEMO

Примечание: я использую startWith , потому что,попарно будет выдавать значения, когда у него есть два значения (prev и current).Поэтому добавьте значение по умолчанию 1 (значение параметра по умолчанию) в startWith.

...