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
Modern Angular: Renovation for Your Applications
Search
Manfred Steyer
PRO
October 24, 2024
Programming
630
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Modern Angular: Renovation for Your Applications
Manfred Steyer
PRO
October 24, 2024
More Decks by Manfred Steyer
See All by Manfred Steyer
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
210
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
120
Nostalgia Meets Technology: Super Mario with TypeScript
manfredsteyer
PRO
0
190
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
240
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
160
Agentic UI
manfredsteyer
PRO
0
240
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
300
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
250
Agentic AI in the Frontend: Architectures with Open Standards @iJS London 2026
manfredsteyer
PRO
0
180
Other Decks in Programming
See All in Programming
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
150
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
180
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
220
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
340
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.6k
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
140
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
180
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
230
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
2.9k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
370
自作OSでスライド発表する
uyuki234
1
3.9k
Featured
See All Featured
Writing Fast Ruby
sferik
630
63k
How STYLIGHT went responsive
nonsquared
100
6.2k
Ruling the World: When Life Gets Gamed
codingconduct
0
290
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.6k
Documentation Writing (for coders)
carmenintech
77
5.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
The untapped power of vector embeddings
frankvandijk
2
1.8k
Deep Space Network (abreviated)
tonyrice
0
230
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
410
Transcript
@ManfredSteyer Modern Angular: Renovation for Your Applications ManfredSteyer
@ManfredSteyer Agenda #1 esbuild #2a Standalone Components #2b Standalone APIs:
Router & Http #3 Signals #4 SSR & Hydration #5 Control Flow & @defer
@ManfredSteyer 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
@ManfredSteyer #1: esbuild
@ManfredSteyer New Generation of Bundlers webpack vite
@ManfredSteyer ng update
@ManfredSteyer #2: Standalone Components & APIs
@ManfredSteyer NgModules + EcmaScript Modules import { NgModule } from
'@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; […] @NgModule({ imports: [BrowserModule, OtherModule], declarations: [AppComponent, OtherComponent, OtherDirective], providers: [], bootstrap: [AppComponent], }) export class AppModule {} TypeScript Modules Angular Modules
@ManfredSteyer Standalone Components @Component({ standalone: true, imports: [ […], FlightCardComponent,
CityPipe, CityValidator, ], selector: 'flight-search', templateUrl: '…' }) export class FlightSearchComponent { […] }
@ManfredSteyer Global Providers bootstrapApplication(AppComponent, { providers: [ MyGlobalService, importProvidersFrom(LegacyModule), provideRouter(APP_ROUTES),
] });
@ManfredSteyer Standalone Component → NgModules @Component({ standalone: true, selector: 'app-root',
imports: [ […] TicketsModule, ], templateUrl: '…' }) export class AppComponent { }
@ManfredSteyer Standalone Component → NgModules @Component({ standalone: true, selector: 'app-root',
imports: [ […] TicketsModule, ], templateUrl: '…' }) export class AppComponent { }
@ManfredSteyer NgModule → Standalone Blocks @NgModule({ imports: [ FlightCardComponent, ],
declarations: [ MyTicketsComponent ], }) export class TicketsModule { }
@ManfredSteyer NgModule → Standalone Blocks @NgModule({ imports: [ FlightCardComponent, ],
declarations: [ MyTicketsComponent ], }) export class TicketsModule { }
@ManfredSteyer Automatic Migration ng g @angular/core:standalone
@ManfredSteyer DEMO
@ManfredSteyer More Migrations ng g @angular/core:route-lazy-loading ng g @angular/core:inject-migration
@ManfredSteyer #3: Signals
@ManfredSteyer Signals: Simple Reactivity Signal as Producer 4711 Consumer read
set notify 4712
@ManfredSteyer Component With Signals flights = signal<Flight[]>([]); const flights =
await this.flightService.findAsPromise(from, to); this.flights.set(flights); <div *ngFor="let f of flights()"> <flight-card [item]="f" /> </div>
@ManfredSteyer DEMO
@ManfredSteyer Stores Streamline Reactive Flow Component Store "Intention" Signal sync/
async computed() computed()
@ManfredSteyer NGRX Signal Store export const FlightBookingStore = signalStore( {
providedIn: 'root' }, […] );
@ManfredSteyer NGRX Signal Store export const FlightBookingStore = signalStore( {
providedIn: 'root' }, withState({ from: 'Paris', to: 'London', […] }), […] );
@ManfredSteyer NGRX Signal Store export const FlightBookingStore = signalStore( {
providedIn: 'root' }, withState({ from: 'Paris', to: 'London', […] }), withComputed(([…]) => ({ […] })), withMethods(([…]) => ({ })), withHooks({ […] }) );
@ManfredSteyer DEMO
@ManfredSteyer #4: SSR & Hydration
@ManfredSteyer When to use SSR? B2C Initial Page Loads Conversion
Rate! SEO Social Preview
@ManfredSteyer Adding SSR ng new myProject --ssr or ng add
@angular/ssr
@ManfredSteyer DEMO
@ManfredSteyer #5: New Control Flow & @defer
@ManfredSteyer @if @if(auth.userName) { <h2>Welcome {{auth.userName}}!</h2> } @else { <h2>Welcome!</h2>
<p>Please log in!</p> }
@ManfredSteyer @if @if(auth.userName) { <h2>Welcome {{auth.userName}}!</h2> } @else if(auth.trial) {
<h2>Welcome to this trial version!</h2> <p>Please sign up to get the full version!</p> } @else { <h2>Welcome!</h2> <p>Please log in!</p> }
@ManfredSteyer @for @for(f of flights; track f.id) { <flight-card [item]="f"
[(selected)]="basket[f.id]" /> }
@ManfredSteyer @for @for(f of flights; track f.id) { <flight-card [item]="f"
[(selected)]="basket[f.id]" /> } @empty { <p>No flights found!</p> }
@ManfredSteyer Automatic Migration ng g @angular/core:control-flow
@ManfredSteyer DEMO
@ManfredSteyer @defer @defer (on viewport) { <app-lazy></app-lazy> } @placeholder {
<div>Placeholder</div> }
@ManfredSteyer DEMO
@ManfredSteyer Free eBook (2nd Edition) angularArchitects.io/modern
@ManfredSteyer Summary esbuild: Build Performance Standalone: Simplicity APIs for Router
& Http: Simplicity Signals: Reactivity & Performance SSR: Simplicity & Initial Page Load Control Flow & @defer: Simplicity & Performance
@ManfredSteyer Contact and Downloads [web] ANGULARarchitects.io [twitter] ManfredSteyer d Slides
& Examples Remote Company Workshops and Consulting http://angulararchitects.io