Angular Reactuve Form Control valueChanges получить значение измененное имя поля, предыдущее значение и текущее значение - PullRequest
1 голос
/ 01 февраля 2020
 this.form = this.fb.group({ 
  prop1: '',
  prop2: ''
});

this.form.valueChanges.pipe(startWith(null), pairwise())
  .subscribe(([prev, next]: [any, any]) => {
    console.log('PREV2', prev);
    console.log('NEXT2', next);
  });

используя этот код, я могу получить предыдущее и текущее значение. то, что я хочу, есть ли какой-нибудь способ узнать, какое поле изменено, предыдущее значение и текущее значение.

подобно имя измененного поля: prop1, prev value: "", текущее значение: "следующее значение"

1 Ответ

2 голосов
/ 01 февраля 2020

Вместо подписки на наблюдаемую FormGroup.valueChanges вы можете подписаться на наблюдаемую FormControl.valueChanges. См. https://angular.io/api/forms/FormControl для реализации. Таким образом, вы можете получить доступ к самому элементу управления. Может быть, что-то вроде этого?

Object.keys(this.form.controls).forEach(key => {
        this.form.controls[key].valueChanges.pipe(startWith(null), pairwise())
        .subscribe(([prev, next]: [any, any]) => {
            console.log(key) // your FormControl Identifier 
            console.log('PREV2', prev);
            console.log('NEXT2', next);
        });
    });
...