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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Manfred Steyer
PRO
May 07, 2025
Programming
500
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
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
24
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
79
Agentic UI
manfredsteyer
PRO
0
120
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
230
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
220
Agentic AI in the Frontend: Architectures with Open Standards @iJS London 2026
manfredsteyer
PRO
0
140
Agentic AI & UI: Arcitecture, HITL, Emerging Standards
manfredsteyer
PRO
0
170
Agentic UI Requires Standards: AG-UI, A2UI, and MCP Apps Work Together @Angular London
manfredsteyer
PRO
1
96
Signal Forms: Beyond the Basics @ngBelgrade 2026
manfredsteyer
PRO
0
210
Other Decks in Programming
See All in Programming
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
520
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
120
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
3.9k
dRuby over BLE
makicamel
2
330
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
510
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
520
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.2k
Claspは野良GASの夢をみるか
takter00
0
180
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.3k
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.3k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
330
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
600
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Paper Plane (Part 1)
katiecoart
PRO
0
8.7k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
190
Unsuck your backbone
ammeep
672
58k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
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