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
610
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
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
160
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
110
Agentic UI
manfredsteyer
PRO
0
170
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
260
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
150
Agentic AI & UI: Arcitecture, HITL, Emerging Standards
manfredsteyer
PRO
0
180
Agentic UI Requires Standards: AG-UI, A2UI, and MCP Apps Work Together @Angular London
manfredsteyer
PRO
1
110
Signal Forms: Beyond the Basics @ngBelgrade 2026
manfredsteyer
PRO
0
220
Other Decks in Programming
See All in Programming
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
790
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
710
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.3k
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
140
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
360
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
280
Contextとはなにか
chiroruxx
1
330
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
180
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
590
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
240
net-httpのHTTP/2対応について
naruse
0
500
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
250
So, you think you're a good person
axbom
PRO
2
2.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
Designing for Performance
lara
611
70k
Marketing to machines
jonoalderson
1
5.5k
Designing for Timeless Needs
cassininazir
1
260
Agile that works and the tools we love
rasmusluckow
331
21k
From π to Pie charts
rasagy
0
210
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
150
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