FormArray valueChanges запускается, даже если для emitEvent установлено значение false при сбросе - PullRequest
0 голосов
/ 27 сентября 2019

Я создаю 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');
    });
  }

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