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
Live Coding: Migrating an Application to Signals
Search
Manfred Steyer
PRO
May 07, 2025
Programming
540
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Live Coding: Migrating an Application to Signals
Manfred Steyer
PRO
May 07, 2025
More Decks by Manfred Steyer
See All by Manfred Steyer
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
420
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
180
Nostalgia Meets Technology: Super Mario with TypeScript
manfredsteyer
PRO
0
260
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
280
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
190
Agentic UI
manfredsteyer
PRO
0
290
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
330
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
280
Agentic AI in the Frontend: Architectures with Open Standards @iJS London 2026
manfredsteyer
PRO
0
200
Other Decks in Programming
See All in Programming
ソフトウェアラスタライザ
fadis
1
650
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
360
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
430
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
240
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
480
Oxlintはいいぞ(続)
yug1224
1
440
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
バグを直したら useEffect が消えた
colorful12
3
700
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
330
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.2k
ALB ログから Trace を気合で繋げる技術
fohte
3
300
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
160
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
520
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Navigating Team Friction
lara
192
16k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
First, design no harm
axbom
PRO
2
1.3k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
500
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Transcript
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten Live Coding:
Migrating an Application to Signals ANGULARarchitects.io
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 2 Agenda
#1 Motivation & Basics #2 Reactive Thinking
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten Motivation &
Basics
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 4 Signals:
Simple Reactivity Signal as Producer 4711 Consumer read set notify 4712
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 5 Fine-Grained
Change Detection Signal Eventually Zone-less!
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 6 DEMO
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 7 Reactive
Thinking Paradigm Shift
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten Application Code
as a Script
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten Marble Run
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten Marble Run
Data Binding
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 11 Building
Your Reactive Graph desserts = signal<Dessert[]>([]); ratings = signal<DessertIdToRatingMap>({}); ratedDesserts = computed(() => this.toRated(this.desserts(), this.ratings()));
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 12 Building
Your Reactive Graph desserts = signal<Dessert[]>([]); ratings = signal<DessertIdToRatingMap>({}); ratedDesserts = computed(() => this.toRated(this.desserts(), this.ratings()));
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 13 DEMO
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten desserts =
signal<Dessert[]>([]); ratings = signal<DessertIdToRatingMap>({}); ratedDesserts = computed(() => this.toRated(this.desserts(), this.ratings())); 14 Building Your Reactive Graph originalName = signal(''); englishName = signal(''); Load Desserts
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 15 Building
Your Reactive Graph dessertsResource = httpResource(() => ({ url: 'http://demo.angulararchitects.io/...', params: { originalName: this.originalName(), englishName: this.englishName(), } })); desserts = signal<Dessert[]>([]); ratings = signal<DessertIdToRatingMap>({}); ratedDesserts = computed(() => this.toRated(this.desserts(), this.ratings()));
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 16 Building
Your Reactive Graph dessertsResource = httpResource(() => ({ url: 'http://demo.angulararchitects.io/...', params: { originalName: this.originalName(), englishName: this.englishName(), } })); desserts = dessertsResource.value; ratings = signal<DessertIdToRatingMap>({}); ratedDesserts = computed(() => this.toRated(this.desserts(), this.ratings()));
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 17 DEMO
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 18 Next
Steps Service for creating Resource Service for managing Signals (Store)
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten 19 Conclusion
Derive State Sync: Computed Async: Resource API
• Textmasterformat bearbeiten • Zweite Ebene Mastertextformat bearbeiten Marble Run