Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Live Coding: Migrating an Application to Signals
Search
Manfred Steyer
PRO
May 07, 2025
Programming
560
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
Human in the Loop Beyond Approval: Toward True Collaboration @FrontMania 2026 in Utrecht
manfredsteyer
PRO
0
38
Agentic UI: Where the Agent meets the User @FrontMania 2026 in Utrecht
manfredsteyer
PRO
0
31
A2UI as an Architecture Question: Agentic UI Between AI Freedom and Control
manfredsteyer
PRO
0
85
AI-Ready Angular Architectures Architecture as Executable Contract
manfredsteyer
PRO
0
230
Nostalgia Meets Technology: Super Mario with TypeScript @BASTA 2026 in Mainz, Germany
manfredsteyer
PRO
0
44
Beyond Chatbots: Agentic UI with Open Standards @AGNTcon 2026 in Amsterdam
manfredsteyer
PRO
0
140
Next-Level Frontends: Agentic Web UIs Under the Hood
manfredsteyer
PRO
0
100
Agentic UI with Open Standards @ngGraz Sep 2026
manfredsteyer
PRO
0
110
Agentic UI with Open Standards @GDG Salzburg, Bgl & Prishtina
manfredsteyer
PRO
0
94
Other Decks in Programming
See All in Programming
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.5k
contenteditable と日本語入力に向き合う
colorful12
0
170
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
380
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
450
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
160
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
930
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
630
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
490
Are APIs Still Relevant in the AI Era?
soyuka
0
430
Featured
See All Featured
WCS-LA-2024
lcolladotor
0
850
Everyday Curiosity
cassininazir
0
350
A better future with KSS
kneath
240
18k
Balancing Empowerment & Direction
lara
6
1.3k
Navigating Team Friction
lara
192
16k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
260
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
520
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
The Curse of the Amulet
leimatthew05
3
15k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
390
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