Значение патча не работает после первого экземпляра angular - PullRequest
1 голос
/ 06 марта 2020

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

Демонстрация Stackblitz

Я называю эту вещь patchValue внутри ngAfterViewInit.

  ngAfterViewInit(): void {
     setTimeout(() => {
       this.editDataToForm();  
     }, );
  }

Она должна обновлять поле формы всякий раз, когда Я нажимаю любой значок редактирования.

1 Ответ

1 голос
/ 06 марта 2020

Проблема заключается в том, что хук жизненного цикла ngAfterViewInit только один раз за * жизненный цикл компонента c (после инициализации представления), и компонент не уничтожается, за исключением случаев, когда вы полностью закрываете форму .

Чтобы обновлять форму каждый раз, когда данные формы изменяются, вам также необходимо подключиться к ngOnChanges ловушке жизненного цикла.

  ngOnChanges(changes: SimpleChanges) {
    console.log('change detected: ', changes)
    setTimeout(() => {
      this.editDataToForm();  
    }, );
  }

Forked StackBlitz: https://stackblitz.com/edit/angular-t7jams

...