Slide 1

Slide 1 text

RainerHahnekamp Deep Dive Change Detection Rainer Hahnekamp - 29. February 2024 - ngOslo

Slide 2

Slide 2 text

RainerHahnekamp About Me... Professional NgRx https://www.youtube.com/ @RainerHahnekamp https://www.ng-news.com https://github.com/softarc-consulting/sheriff ● Rainer Hahnekamp ANGULARarchitects.io ● Developer / Trainer / Speaker Modern Spring for Angular @RainerHahnekamp

Slide 3

Slide 3 text

RainerHahnekamp Component Tree Web Application Submit Cancel Change Detection

Slide 4

Slide 4 text

RainerHahnekamp Component Tree Web Application Submit Cancel Change Detection

Slide 5

Slide 5 text

RainerHahnekamp Component Tree Web Application Submit Cancel Change Detection

Slide 6

Slide 6 text

RainerHahnekamp Component Tree Web Application Submit Cancel Change Detection

Slide 7

Slide 7 text

RainerHahnekamp Component Tree Web Application Submit Cancel Change Detection

Slide 8

Slide 8 text

RainerHahnekamp Component Tree Web Application Submit Cancel Change Detection

Slide 9

Slide 9 text

RainerHahnekamp Component Tree Web Application Submit Cancel Change Detection

Slide 10

Slide 10 text

RainerHahnekamp Component Tree Web Application Submit Cancel Change Detection

Slide 11

Slide 11 text

RainerHahnekamp Component Tree Web Application Submit Cancel Change Detection

Slide 12

Slide 12 text

RainerHahnekamp Triggers for Change Detection Handled DOM Events Asynchronous Tasks

Slide 13

Slide 13 text

RainerHahnekamp 1. Change Detection with Default Strategy = OnPush = Default 1. Waiting for Events 3. Dirty Marking 4. Change Detection zone.js 2. Event Happens

Slide 14

Slide 14 text

RainerHahnekamp Change Detection: OnPush ● Only checks if Component is dirty ● No dirty marking by asynchronous task!

Slide 15

Slide 15 text

RainerHahnekamp 2. Change Detection: Click Event in Default Component = OnPush = Default 1. Waiting for Events 3. Dirty Marking 4. Change Detection zone.js 2. Event Happens

Slide 16

Slide 16 text

RainerHahnekamp 3. Change Detection: Click Event in OnPush Component = OnPush = Default 1. Waiting for Events 3. Dirty Marking 2. Event Happens 4. Change Detection zone.js

Slide 17

Slide 17 text

RainerHahnekamp Criteria markForCheck Immutable Property Binding Handled DOM Events async Pipe Signal Change (Local Change Detection) manually via markForCheck

Slide 18

Slide 18 text

RainerHahnekamp 4. Local Change Detection: Signal Change in OnPush Component = OnPush = Default 1. Waiting for Events 3. Dirty Marking 4. Change Detection zone.js 2. Event Happens

Slide 19

Slide 19 text

RainerHahnekamp Change Detection in the Future ● Careful with OnPush with zone.js ● "Acceptable" with upcoming Scheduler ● Simple & Easy with upcoming Signal Components

Slide 20

Slide 20 text

RainerHahnekamp Further Reading and Watching https://medium.com/ngconf/ngrx-signal-store-the-mis sing-piece-to-signals-ac125d804026 https://youtu.be/0PJPZ3rLqrY