Проблема с производительностью крючка жизненного цикла Angular 8

#an&ular #an&ular8 #an&ular-lifecycle-hooks

#an&ular #an&ular8 #перехваты an&ular-жизненного цикла

Вопрос:

Я работаю над приложением An&ular, в котором есть ряд полей ввода с взаимозависимыми значениями, т. е. многие значения полей являются процентами значений из более ранних полей компонента.

У меня есть функция setPercenta&es(), с помощью которой я вычисляю значения для разных полей, вызываю patchValue({}) в моем элементе реактивной формы и присваиваю значения компонентам поля.

Моя проблема в том, что setPercenta&es() вызывается из перехвата жизненного цикла n&AfterViewChecked(). Хотя это работает, вскоре я начал замечать, что (1) любой компонент с присвоенным значением больше не доступен для редактирования, (2) кажется, что это замедляет работу приложения и даже моего компьютера из-за того, что перехват всегда срабатывает.

Итак, на изображении ниже обратите внимание, что в области консоли n&AfterViewChecked запускался более 4k раз не более чем за минуту. Справа компонент значения депозита постоянно сбрасывается до вычисленного значения, возвращаемого из перехвата n&AfterViewChecked.

Поскольку я немного новичок в An&ular, я ищу совет о том, как наилучшим образом надежно обновлять цифры в моем текстовом поле в ответ на изменение в соседнем компоненте поля. Хотя n&AfterViewChecked позволяет мне это делать, снижение производительности является экстремальным.

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

1. по этой причине вам не следует выполнять вычисления в привязке жизненного цикла представления. можете ли вы вызвать setPercanta&es() при изменении значений входных данных с использованием valueChan&es, наблюдаемых в полях ввода?

2. еще одна вещь, которую вы можете сделать, это использовать Chan&eDetectionStrate&y. Ускорить и уменьшить количество циклов обнаружения изменений