Получается, если использовать эту стратегию, то при получении данных от бека мы их отрисовывать будем через async pipe, ибо если подписываться то надо будет запускать изменение обнаружений изменений вручную или же это нормальная практика, руками запускать?
Несовсем понятно, в чем проблема?)
При onPush стратегии автоматически проверка изменений запускается только после изменений @Input, async пайпа внутри себя делает markForCheck когда приходит новое значение, можно запускать и руками через ChangeDetectorRef, если ни первый вариант ни второй вам не подходит
Понял, спасибо. А что лучше использовать, в плане производительности? Async pipe или же subscribe и внутри него запускать обнаружение изменений. Читал статью, в которой такие слова были сказаны. "Ручной запуск обнаружения изменения не является хаком но вы должны использовать его только в случае необходимости" В случае необходимости. Как я понял, лучше избегать. Вот в чем вопрос
та то уже на любителя и по ситуации. Главное, что обнаружение изменений onPush включено, а значит компонента не будет реагировать на каждый чих. Если не какое-то мегасложное приложение, то без onPush даже проще писать, особенно на начальных этапах изучения ангуляра) Не будет заметно разницы
по производительности разницы нет вообще
буквально сегодня вышло видео от автора их Харькова, который уже давно ничего не выпускал. Там об этом пайпе, примеры его использования и полезные советы https://www.youtube.com/watch?v=DX_6GAx26U0&lc=Ugw4S6oKLosoZTnPmIh4AaABAg.9aAFxs0FSH49aAGc1yZdDd
Однако async является грязным пайпом и отрисовку делает больше одного раза
так и не делает ничего трудоёмкого при вызове что могло хоть как-то замедлить приложение
Ну трудоемкость уже зависит от данных которые передаются в пайп
мы же про async пайп говорим, Observable передаётся внутри два ифа на сравнение и вернуть значение из переменной, учитывая что на странице мало кто использует больше чем двух async пайпов то можно пренебречь что это грязный пайп
на null он не вызывает markForCheck, только когда ему приходит новое сообщение по подписке
А ты уверен что после одной полной отрисовки он не рисует второй раз?
исходники ангулара в открытом доступе, можно всегда глянуть что он делает
В рамках одного синхронного цикла он обновит вьюху один раз.
Хорошо. Он дергает markforcheck. Есть ли смысл оформлять подписку в компоненте и дергать detectchanges?
Посмотри статью, которую я кинул — это два очень разных метода 🙂
detectChanges по всем канонам ангуляра должен дёргаться, когда компонент выдернут из дерева проверки изменений (с помощью метода detach), т.к. он по сути синхронно запускает проверку изменений компонента и его дочерних компонентов
Не понятны слова «выдернут из дерева проверки изменений»
То есть ангуляр его не будет никак проверять
https://angular.io/api/core/ChangeDetectorRef#detach
Обсуждают сегодня