Я создаю formArray в зависимости от данных, возвращаемых из API (у пользователя может быть 5 строк данных, которые я должен отобразить на экране).
Пользователь может изменить любые данныеи отправить в API (я смотрю на каждый элемент управления в форме Array, чтобы узнать, что является грязным и его необходимо отправить в API).
После успешного завершения я пытаюсь выполнить сброс формы и установить для 'emitEvent' значение false, чтобы оно не запускало form.valueChanges.Я хочу изменить класс строки в зависимости от того, грязный он или нет.После успешного сохранения в API я хочу сбросить форму, чтобы вернуть класс по умолчанию.
Это не работает для меня (form.valueChanges отключается для каждой строки).
form: FormGroup;
formArray: FormArray;
ngOnInit() {
this.form = this.formBuilder.group({
'tl': this.formBuilder.array([]),
});
this.formArray = this.form.get('tl') as FormArray;
this.formChanges();
}
//This is what I am using to add controls to my form array
formInitialized(formGroup: FormGroup, subject: SubjectSubmitted): void {
formGroup.addControl('subjectId', new FormControl(subject.id));
if (subject.tl !== null) {
this.setFormValues(subject.tl, formGroup);
}
this.formArray.push(formGroup);
}
//This is called after call to API for updating a control
private submitSucceeded(): void {
this.form.reset(this.form.value, {emitEvent: false});
}
private formChanges(): void {
this.form.controls.tl.valueChanges.subscribe(element => {
console.log('form changed');
});
}