Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
3 Effective Rules for Using Signals in Angular
Search
Manfred Steyer
PRO
November 05, 2024
Programming
320
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
3 Effective Rules for Using Signals in Angular
Manfred Steyer
PRO
November 05, 2024
More Decks by Manfred Steyer
See All by Manfred Steyer
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
180
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
110
Nostalgia Meets Technology: Super Mario with TypeScript
manfredsteyer
PRO
0
180
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
230
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
160
Agentic UI
manfredsteyer
PRO
0
230
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
290
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
240
Agentic AI in the Frontend: Architectures with Open Standards @iJS London 2026
manfredsteyer
PRO
0
170
Other Decks in Programming
See All in Programming
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
160
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
380
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
0
200
フィードバックで育てるAI開発
kotaminato
1
120
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
520
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
180
5分で問診!Composer セキュリティ健康診断
codmoninc
0
270
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
330
symfony/aiとlaravel/boost
77web
0
130
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
230
霧の中の代数的エフェクト
funnyycat
1
390
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
2
1.5k
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
45k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
970
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
A designer walks into a library…
pauljervisheath
211
24k
Code Review Best Practice
trishagee
74
20k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Everyday Curiosity
cassininazir
0
260
Technical Leadership for Architectural Decision Making
baasie
3
440
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
Transcript
AngularArchitects.io | @ManfredSteyer | @RainerHahnekamp 3 Effective Rules for Using
Signals in Angular
None
None
None
Agenda • Austrian Desserts • Computed • Resource API •
Effects • Stores
Result 3 Rules (of thumb)
About me… Manfred Steyer, ANGULARarchitects.io (Remote) Angular Workshops and Consulting
Google Developer Expert for Angular Blog, Books, Articles, and Talks about Angular Manfred Steyer
Austrian Desserts: Example App
Demo
Computed: Extremely Unterrated!
Reactive Programming: Pardigm Shift!
Marble Run
Reactive Flow with Computed desserts = signal<Dessert[]>([]); ratings = signal<DessertIdToRatingMap>({});
ratedDesserts = computed(() => this.toRated(this.desserts(), this.ratings()));
Reactive Flow with Computed desserts = signal<Dessert[]>([]); ratings = signal<DessertIdToRatingMap>({});
ratedDesserts = computed(() => this.toRated(this.desserts(), this.ratings()));
Reactive Flow with Computed desserts = signal<Dessert[]>([]); ratings = signal<DessertIdToRatingMap>({});
ratedDesserts = computed(() => this.toRated(this.desserts(), this.ratings())); originalName = signal(''); englishName = signal(''); Load Desserts
Resource API
Resource API dessertsResource = resource({ request: this.dessertsCriteria, loader: (param) =>
{ return this.#dessertService.findPromise(param.request); } }); Experimental in Angular 19
Resource API dessertsResource = resource({ request: this.dessertsCriteria, loader: (param) =>
{ return this.#dessertService.findPromise(param.request); } }); dessertsCriteria = computed(() => ({ originalName: this.originalName(), englishName: this.englishName(), })); desserts = this.dessertsResource.value; ratedDesserts = computed(() => this.toRated(this.desserts, …));
Architecture Rule #1 Derive state where possible
Effects
Connecting Reactive and Imperative World
None
Ideal-typical Tasks • Drawing on a canvas • Manual DOM
manipulations • Logging • Synching with LocalStore Stuff, you cannot do with data binding Rendering (and similar tasks …)
Demo Branch: 04c-effects
Architecture Rule #2 Avoid effects propagating state and Signal writes
Reactive Helpers: Effects Under the Hood
Stores
None
None
None
Stores Streamline Reactive Flow Component Store "Intention" Signal sync/ async
computed() computed()
Architecture Rule #3 Stores make your reactive flow more manageable
Free eBook (6th Edition) angularArchitects.io/ebook
Conclusion Architecture Rule #1 Derive state where possible Architecture Rule
#2 Avoid effects propagating state and Signal writes Architecture Rule #3 Stores make your reactive flow more manageable
None
None
RainerHahnekamp AngularArchitects.io Slides & Examples ManfredSteyer