Good note by @ilnurryazhapov9377. The markForCheck() is being called automatically not only when native JS events are handled (e.g. click, scroll, etc) but also happens when the output event (@Output() + EventEmitter) is handled. I had to mention that explicitly but somehow missed that :) 💡 Short Frontend Snacks, tips, and news every week here: Twitter - twitter.com/DecodedFrontend Instagram - instagram.com/decodedfrontend LinkedIn - www.linkedin.com/in/dmezhenskyi
Thanks for the explanation! Angular change detection happens depth first (animations are showing breadth-first), but I got the whole idea on how the process works. Kudos
Hi Dima 😊I bought your course Angular Forms Advanced and must to tell you that is a best course for forms and custom controls !Thanx for your awesome content
This is gold. I had partial understanding in bits and pieces. By showing the real angular internal implemtation, it's not just some concepts in the air. Thank you so much for this amazing content !❤
By far the bestest explanation on the nuances of Angular Change Detection. Honestly, Angular should just put a link to your 3-part series on their documentation page for Change Detection. I love working with Angular, but I honestly do not love its change detection story. I felt that it is a mess of "if ... then ... else" working on top of "monkey-patched" browser apis through ZoneJs. Hopefully, the Signal APIs and later on, Signal-based components will remove the above convoluted logic and ZoneJs, so that Angular change detection is more fine-grained and simpler to understand, and then async-await won't have to be down-compiled to Promise.then() anymore (because ZoneJs can't monkey-patch async-await syntax)
Thank you for asking :) It is amazing to see the world without the blur effect. The recovering took about a couple of weeks and now everything is ok. One of the best my decisions.
Very clean explaination. What is your thoughts on the newly released feature signals. That could be a new way of dealing with change detection as far as i know.
I have mostly positive thoughts. Signals will definitely simplify and improve the CD in Angular. It is supported to be more performant and will make onPush redundant. I have actually a video with my first impression about signals :)
It’s really great explanation of change detection strategy. Just one query i had face issue while using on push With dev build, view updating correctly however with prod build view not updating.....thanks in advance wait your answer for same
Yes, Signals will improve the CD mechanism and change the algorithm of how it currently works but I don't go into this topic yet because signals are in developer preview mode and when it become stable, I will do another video about CD with signals
Thanks for a great video! I always thought that Angular traversals components tree with an "Depth-first search" approach (HeaderComponent -> SearchComponent -> ButtonComponent -> PageComponent -> ...), but on the diagrams it shown as an "Breadth-first search" (HeaderComponent -> PageComponent -> FooterComponent -> ...). Is this just a diagram issue or Angular really works that way?
great videos seria, but not too deep for myself, because we lose important process how exactly angular understand that value change how exactly angular check old value with new one I like this channel, thanks for your videos
I think you missed somthing. I Test Some Senarios with a demo app like this AppComponent has 2 child components: DashboardComponent - HomeComponent DashboardComponent (Apply onPush) and HomeComponent too. and in home component I just apply a click event to change property name in the model and it works, my question: Why DashboardComponent ngDoCheck run again? after I click button in HomeComponent? and when I check angular dev tools profiler section and I found dashboard component DoCheck run again
doesn't settimeout automatically call change detection ? also doesn't onpush prevent Change detection cycle in child components ? if not what is benefit of using it for performance perspective ?
Hey! Thanks for your questions. - settimeout will cause a change detection cycle for the entire view tree of the application. - yes, if the component with onPush isn't marked as dirty, then the CD won't be executed for the component view and all its children.
I agree that it's the best case scenario when all components have OnPush strategy, but I kinda wonder, wouldn't it be easier if we just disable automatic change detection as you did in the first video and then simply run detectChanges when we need 🤔 this way we won't bother all the logic and stuff with these strategies and manual flagging.... Although, how the parent components will get updated if child affects it, ok nevermind
Вітаю)Є питання,дещо не по відео,тому перепрошую,що не по темі.Я працюю на проекті(To Do List)(фронт-енд частина на Angular),який краще порадите використати компонент для відображення інфи(тасок),щоб кожен запис ,тобто таска,складалася зі ще одної своєрідної таблички.Ну і відповідно,щоб ці дані можна було підв'язати і відправити на сервер
На самом деле ты прав. Мне стоило уточнить что речь идет не только о нативных js ивентах как click, etc, но и для тех которые имитятся с помощью EventEmitter + @Output().