Привет всем, сложно, но последнее видео плейлиста готово Приятного просмотра P.S. Использование cdr.detectChanges() сделало Палау рабочей для нового движка (IVY), но теперь перерисовка запускается мгновенно, а значит если сработают несколько Пайпса одновременно, или Observable отдать несколько значений подряд, то столько перерисовок будет запущено Оригинальная пайпа использует метод markForCheck(), если используется старый движок (zone.js) Более продвинутая версия пайпы, это ngrxPush из библиотеки ngrx Там реализована оптимизация отрисовки так, что лишних перерисовок не запускается
В конце видео, там где автор делает переменную в классе тестового компонента ` user$?: Observable ` у меня все ни как не получалось скомпилировать проект, так как компилятор ругался на инструкцию в шаблоне: `` пока я не поменял объявление функции transform в pipe с `transform(observable: Observable): T | null {` на: `transform(observable: Observable | null): T | null {`
Данная реализация, за счёт cdr.detectChanges() работает без зоны, но в некоторых случаях делает много лишних перерисовок. Пока новых видео в этом плейлисте не будет, как соберу материал по этой теме, то дополню плейлист
Спасибо за отзыв) Декораторы рассматривал в плейлисте по TS, пока новых примеров нет в планах Ещё много тем которые нужны каждому разработчику на angular
markForCheck указывает Angular на то, что компонент и его дерево компонентов могут потенциально быть изменены и требуют перерисовки. Однако, сама перерисовка не происходит мгновенно. Вместо этого, Angular помечает компонент и его родительские компоненты как "грязные" и добавляет его в очередь на проверку изменений. При следующем цикле обнаружения изменений, Angular проверит помеченные компоненты и выполнит их перерисовку. detectChanges немедленно запускает цикл обнаружения изменений для компонента и его дерева компонентов, приводя к немедленной перерисовке. Это может потенциально привести к более частым и дорогостоящим операциям перерисовки. Тут не совсем правильное утверждение насчет markForCheck и из за этого не верный выбор метода. Теперь каждый самописный асинк пайп будет сжигать уйму памяти на немедленную перерисовку. Так что тут все же думаю надо использовать markForCheck .
Полностью согласен. В большинстве случаев предпочтительно использовать markForCheck В свою очередь в тестах используют только detectChanges, если другого не требует логика теста P.S. Реализацию async пайпы я брал из исходников ангулар, возможно напутал или они так сделали, надо будет перепроверить по возможности
Такое видео не практичное, настройки у всех разные, деплоят техлиды или вообще фреймворк встроен в уже готовый набор микросервисов Если по быстрому, то npm run build и папка dist содержит все файлы проекта, открыв index.html на вашем сайте все будет работать
Привет, Максим. Новые курсы по Ангуляр не ожидаются? Нет ли у тебя каких-то пет проектов, где пригодится разработчик, который готов поработать за хороше кодревью))?
Дякую за чудові укроки! Є доречі крутий пайп який широко поширений withLoadind який містить інтерфейс { data: any, error: null | any, loading:boolean } який по ідея для простих запитів заміняє стейт.
классно, действительно полезно знать как что работает 👍
Привет всем, сложно, но последнее видео плейлиста готово
Приятного просмотра
P.S. Использование cdr.detectChanges() сделало Палау рабочей для нового движка (IVY), но теперь перерисовка запускается мгновенно, а значит если сработают несколько Пайпса одновременно, или Observable отдать несколько значений подряд, то столько перерисовок будет запущено
Оригинальная пайпа использует метод markForCheck(), если используется старый движок (zone.js)
Более продвинутая версия пайпы, это ngrxPush из библиотеки ngrx
Там реализована оптимизация отрисовки так, что лишних перерисовок не запускается
Ngrx ждать стоит?
@@EtoBARAKUDAvasa ngrx есть на канале, новые будут не скоро
привет. запиши пожалуйста про ngrxPush и ngrxLet
Твой канал -- прям находка года) спасибо за труд!
Вот именно!!!
Спасибо большое! Отличные уроки, продвинутые и понятные
Отличные видео. Ждем директивы, интерсепторы, роутинги и много всего интересного и полезного)
Максим, спасибо большое за интересные уроки!!!
Огромное спасибо за урок, жду новые видосы)
Отличный разбор 👍
Спасибо!!
ангуляр пайп пайпа асинк под копотом пишем сами async pipe angular onPush changeDetection detectChanges js
Класно що не кинув на півдорозі, топ плейлист вийшов
В конце видео, там где автор делает переменную в классе тестового компонента
` user$?: Observable `
у меня все ни как не получалось скомпилировать проект,
так как компилятор ругался на инструкцию в шаблоне:
``
пока я не поменял объявление функции transform в pipe с
`transform(observable: Observable): T | null {`
на:
`transform(observable: Observable | null): T | null {`
Благодарю! Будет вариант асинхронной трубы для zone-less приложений?
Данная реализация, за счёт cdr.detectChanges() работает без зоны, но в некоторых случаях делает много лишних перерисовок.
Пока новых видео в этом плейлисте не будет, как соберу материал по этой теме, то дополню плейлист
Спасибо Максим✊ очень интересный материал 🙂
Скажите пожалуйста, есть ли в планах разобрать декораторы и какие то кастомные примеры с ними?
Спасибо за отзыв)
Декораторы рассматривал в плейлисте по TS, пока новых примеров нет в планах
Ещё много тем которые нужны каждому разработчику на angular
Просто супер!!!!
markForCheck указывает Angular на то, что компонент и его дерево компонентов могут потенциально быть изменены и требуют перерисовки. Однако, сама перерисовка не происходит мгновенно. Вместо этого, Angular помечает компонент и его родительские компоненты как "грязные" и добавляет его в очередь на проверку изменений. При следующем цикле обнаружения изменений, Angular проверит помеченные компоненты и выполнит их перерисовку.
detectChanges немедленно запускает цикл обнаружения изменений для компонента и его дерева компонентов, приводя к немедленной перерисовке. Это может потенциально привести к более частым и дорогостоящим операциям перерисовки.
Тут не совсем правильное утверждение насчет markForCheck и из за этого не верный выбор метода. Теперь каждый самописный асинк пайп будет сжигать уйму памяти на немедленную перерисовку. Так что тут все же думаю надо использовать markForCheck .
Полностью согласен. В большинстве случаев предпочтительно использовать markForCheck
В свою очередь в тестах используют только detectChanges, если другого не требует логика теста
P.S. Реализацию async пайпы я брал из исходников ангулар, возможно напутал или они так сделали, надо будет перепроверить по возможности
@@grommaks переборол лень и посмотрел исходники - там марка (10.07.2023)
Хороший канал и много полезной информации, но не нашёл информации про деплой на сервер и сборку под прод, можно такое видео?) с настройками и т.д.
Такое видео не практичное, настройки у всех разные, деплоят техлиды или вообще фреймворк встроен в уже готовый набор микросервисов
Если по быстрому, то
npm run build и папка dist содержит все файлы проекта, открыв index.html на вашем сайте все будет работать
@@grommaks вот потому и хотелось об этом видео))) стандартный деплой ет понятно, а вот разные варианты обзор такой, я бы посмотрел)
@@bwaligarus пока не планируется такое видео, на ближайший период есть список тем
@@grommaks То что хотел
Привет, Максим. Новые курсы по Ангуляр не ожидаются? Нет ли у тебя каких-то пет проектов, где пригодится разработчик, который готов поработать за хороше кодревью))?
Привет, все время загружено, пытаюсь найти время для новых видео
Проектов нет(
Про DDD и NX было б интересно посмотреть видео. С списке искал не нешел.
Дякую за чудові укроки! Є доречі крутий пайп який широко поширений withLoadind який містить інтерфейс { data: any, error: null | any, loading:boolean } який по ідея для простих запитів заміняє стейт.
Дякую, прочитав статтю про це, як я бачу це кастомне рішення, але це рішення мені подобається :)
Максим , а как на счет урока по Angular PWA ?) плиз )
а не кажется что из-за detectChanges было запущено два раза перерендеринг? один в общем флоу приложения и второй раз ручным вызовом detectChanges ?
Возможно 🤔
Возможно 🤔
Лайк
когда новые видео?)
Cool!
Смотрел видео, сразу вопрос про промис появился. Ты прямо с языка взял. Почему про промис не добавил? Там же код был бы проще чем с обсервеблами
Кода было бы больше, главное понять принципы на сложном варианте и не усугубить :)
Почему undefined, а не null?
TypeScript в строгом режиме требует либо явно указать, что поле может быть null либо использовать undefined.
что со звуком?)
Все просто, записывал на гарнитуру, а микрофон остался в Харькове под обстрелами
Друг, ты там как?
Жив здоров
@@grommaks рад слышать :)
Мирного неба тебе над головой и спасибо за твой труд
@@grommaks Ты Украинец? Прослезился. Дай бог тебе здоровья и дольгих лет