ChangeDetectorRef.DetectChanges() работает в первый раз, когда задано в ngAfterViewChecked

#angular #smartadmin

#angular #smartadmin

Вопрос:

Я работаю над приложением Angular 4, которое использует шаблон smartadmin. У меня есть всплывающее окно внутри ng-formly .
Это всплывающее окно отображает форму с использованием повторяющегося раздела. При нажатии на всплывающую кнопку выдается ошибка:

‘ExpressionChangedAfterItHasBeenCheckedError: выражение изменилось после проверки. Предыдущее значение: ‘true’ . Текущее значение: ‘false’.’

Для решения этой проблемы я дал detectChanges() метод ChangeDetectorRef in ngAfterViewChecked .
Теперь, если я нажму всплывающую кнопку в первый раз, форма отобразится во всплывающем окне.
Для дальнейших нажатий кнопок я получаю:

«Ошибка типа: this.FormControl.push не является функцией» из repeatedSection . Повторная секция инициализируется дважды, начиная со второго раза.

Пожалуйста, помогите мне решить эту проблему.

Комментарии:

1. Можете ли вы повторить это на stackblitz.com ?

2. В режиме разработки вы получаете ошибку ExpressionChangedAfterItHasBeenCheckedError , поскольку Angular выполняет обнаружение изменений дважды вместо одного раза и проверяет, изменилось ли значение между ними. Эта ошибка не будет отображаться в prod build, но указывает на возможные недостатки в том, как происходит поток данных на вашей странице. Чтобы отладить эту проблему, вы должны показать код с вашим шаблоном, включая эту привязку, и как значение для него устанавливается в вашем контроллере.