следите за изменениями для formControlNames и как узнать, какая строка изменений в formGroup для цикла - Reactive Form

хотел бы следить за изменениями для formControlNames в цикле formGroup for, но как узнать, какой индекс цикла for был внесен в изменения. Например, если я хочу наблюдать за изменениями для formcontrolname для «ruleType», valueChanges не дает информацию о том, какая конкретная строка изменений была инициирована.

Я попробовал подписку на изменения formGroup.value (строки 52-58 app.component.ts на stackblitz), но это не сработало. Я должен прокомментировать это и использовать (строки 46-49 app.component.ts в stackblitz) для цикла для цикла через formArray, но он, похоже, также не может обнаружить изменения в formControlName. Если у вас есть идеи, я буду очень признателен.

Хотел бы изменить конкретное имя группы форм для этой конкретной строки (конкретный индекс formArray).

Моя кодовая база находится по адресу: https://stackblitz.com/edit/angular-eazn5i?file=src%2Fapp%2Fapp.component.html


person user21    schedule 15.04.2020    source источник
comment
Эй, у вашего stackblitz есть ошибка консоли   -  person Shahar Shokrani    schedule 16.04.2020
comment
Я только что решил некоторые ошибки консоли.   -  person user21    schedule 16.04.2020


Ответы (1)


Поскольку в вашем StackBlitz есть ошибка консоли, я создал более упрощенную версию, отвечающую вашим требованиям: StackBlitz.

Я использовал замыкания, чтобы иметь доступ к текущему элементу управления формой, имеющему событие изменения значения:

for (let formGroup of this.myFormGroups) {
  formGroup.get("firstName").valueChanges.subscribe(control => {
    console.log(formGroup);        
  });
}

теперь у вас есть доступ к братьям и сестрам элемента управления (другим контроллерам в той же строке), перейдя к formGroup.controls.

person Shahar Shokrani    schedule 16.04.2020