HTML CSS JAVASCRIPT SQL MYSQL PYTHON JAVA PHP C C++ C# PACKET TRACER CYBERSECURITY REACT TYPESCRIPT NODE.JS GIT & GITHUB DATA SCIENCE BOOTSTRAP GO KOTLIN JQUERY DJANGO VUE ANGULAR MONGODB POSTGRESQL SASS NUMPY PANDAS SCIPY DSA RUST SWIFT BASHXMLW3.CSSANGULARJSAIAWSPROGRAMMAZIONEEXCEL WORD POWERPOINT
Corso gratuito

Corso Angular in italiano

Impara da zero il framework di Google in TypeScript: componenti, direttive, servizi, dependency injection, routing, HTTP, Signals, control flow e SSR. 32 lezioni con esempi di codice.

Corso Angular

Angular è una piattaforma e un framework per costruire applicazioni web a pagina singola (SPA) usando HTML e TypeScript. È sviluppato e mantenuto da Google.

Perché scegliere Angular?

  • 🏗️ Framework completo: routing, form, HTTP e testing già inclusi
  • 📐 Struttura solida: ideale per applicazioni grandi ed enterprise
  • 🔷 TypeScript: tipizzazione statica che previene molti errori
  • Reattività moderna: con i Signals e il change detection ottimizzato

Un componente Angular

Esempio di codice

Angular usa TypeScript e si compila con la Angular CLI. Nel pannello laterale trovi i link per provare il codice online su StackBlitz.

Introduzione ad Angular

Angular è stato creato da Google nel 2016 (la riscrittura completa di AngularJS del 2010). Oggi è uno dei framework frontend più usati nelle grandi aziende.

Concetti fondamentali

  • Componenti: i mattoni dell'interfaccia utente
  • Template: l'HTML con la sintassi Angular
  • Direttive: estendono l'HTML con comportamenti
  • Servizi: logica riutilizzabile e condivisa
  • Dependency Injection: gestione automatica delle dipendenze
  • Moduli / Standalone: organizzazione del codice

Angular vs AngularJS

AngularJS (1.x)Angular (2+)
LinguaggioJavaScriptTypeScript
ArchitetturaMVCComponenti
PerformanceBuonaEccellente

Prerequisiti

  • Conoscenza di HTML e CSS
  • Basi di JavaScript e TypeScript
  • Concetti di programmazione a oggetti

Iniziare con Angular

Per sviluppare con Angular servono Node.js e la Angular CLI.

Installazione

Esempio di codice

Crea un nuovo progetto

Esempio di codice

Il comando ng serve avvia il server di sviluppo su http://localhost:4200 con ricarica automatica.

Struttura del progetto

Esempio di codice

La Prima App Angular

Creiamo un semplice componente che mostra un saluto dinamico.

Il componente

Esempio di codice

Il punto di ingresso (main.ts)

Esempio di codice

Standalone Components

Dalle versioni recenti, Angular usa i componenti standalone: non serve più dichiararli in un NgModule. Si importano direttamente dove servono, semplificando la struttura del progetto.

Template in Angular

Il template è l'HTML del componente arricchito con la sintassi Angular.

Interpolazione

Esempio di codice

Template inline vs file esterno

Esempio di codice

Espressioni nei template

Nei template puoi usare espressioni, ma non istruzioni complesse:

Esempio di codice

Componenti Angular

I componenti sono i blocchi fondamentali di un'app Angular. Ognuno controlla una porzione di schermo.

Anatomia di un componente

Esempio di codice

Usare un componente in un altro

Esempio di codice

Generare un componente con la CLI

Esempio di codice

Data Binding in Angular

Il data binding sincronizza i dati tra la classe del componente e il template. Angular offre quattro tipi.

1. Interpolazione (classe → template)

Esempio di codice

2. Property binding (classe → template)

Esempio di codice

3. Event binding (template → classe)

Esempio di codice

4. Two-way binding (bidirezionale)

Esempio di codice

La sintassi [(ngModel)] è chiamata "banana in a box" 🍌📦: combina property binding [ ] ed event binding ( ).

Direttive Angular

Le direttive estendono o modificano gli elementi HTML. Ci sono tre tipi.

Direttive strutturali (cambiano il DOM)

Esempio di codice

Direttive di attributo (cambiano l'aspetto)

Esempio di codice

Direttive personalizzate

Esempio di codice

Eventi in Angular

Angular gestisce gli eventi del DOM con la sintassi event binding (evento).

Eventi comuni

Esempio di codice

L'oggetto $event

Esempio di codice

Key events specifici

Esempio di codice

Rendering Condizionale

Angular permette di mostrare contenuto in base a condizioni.

*ngIf

Esempio di codice

*ngIf con else

Esempio di codice

Nuovo control flow @if (Angular 17+)

Esempio di codice

[hidden] vs *ngIf

Esempio di codice

Liste in Angular

Per renderizzare liste si usa la direttiva *ngFor.

*ngFor di base

Esempio di codice

Con indice e variabili

Esempio di codice

trackBy per le performance

Esempio di codice
Esempio di codice

Nuovo control flow @for (Angular 17+)

Esempio di codice

Form in Angular

Angular offre due approcci ai form: Template-driven e Reactive.

Template-driven (con ngModel)

Esempio di codice

Reactive Forms (più potenti)

Esempio di codice

Usa i Reactive Forms per form complessi con validazione avanzata.

Routing in Angular

Il Router gestisce la navigazione tra le viste in una SPA.

Configurazione delle rotte

Esempio di codice

Router outlet e link

Esempio di codice

Navigazione da codice

Esempio di codice

Leggere i parametri

Esempio di codice

Servizi e Dependency Injection

I servizi contengono logica riutilizzabile (es. accesso ai dati). La Dependency Injection (DI) li fornisce automaticamente ai componenti.

Creare un servizio

Esempio di codice

Iniettare un servizio in un componente

Esempio di codice

Generare un servizio con la CLI

Esempio di codice

HTTP Client in Angular

L'HttpClient permette di comunicare con API e server remoti.

Configurazione (main.ts)

Esempio di codice

Richiesta GET

Esempio di codice

POST, PUT, DELETE

Esempio di codice

Le richieste HTTP restituiscono Observable (RxJS): ci si iscrive con .subscribe().

Pipe in Angular

Le pipe trasformano i dati direttamente nel template, con la sintassi valore | pipe.

Pipe integrate

Esempio di codice

Concatenare pipe

Esempio di codice

Pipe personalizzata

Esempio di codice
Esempio di codice

Lifecycle Hooks

I lifecycle hooks sono metodi chiamati da Angular in momenti precisi della vita del componente.

I principali hook

HookQuando viene chiamato
ngOnInitDopo l'inizializzazione del componente
ngOnChangesQuando cambiano gli @Input
ngDoCheckA ogni change detection
ngAfterViewInitDopo l'init della vista
ngOnDestroyPrima della distruzione

Esempio

Esempio di codice

ngOnInit è l'hook più usato: è il posto giusto per caricare i dati iniziali (es. chiamate HTTP).

Styling in Angular

Angular incapsula gli stili: i CSS di un componente valgono solo per quel componente.

Stili del componente

Esempio di codice

File di stile esterno

Esempio di codice

Binding dinamico di classi e stili

Esempio di codice

View Encapsulation

Per impostazione predefinita Angular usa ViewEncapsulation.Emulated: aggiunge attributi unici per isolare i CSS, evitando conflitti tra componenti.

App Bootstrap

Il bootstrap è il processo che avvia l'applicazione Angular.

main.ts — il punto di ingresso

Esempio di codice

app.config.ts — configurazione

Esempio di codice

index.html

Esempio di codice

Con i componenti standalone, bootstrapApplication() ha sostituito il vecchio approccio basato su NgModule e platformBrowserDynamic().

Control Flow (Angular 17+)

Dalla versione 17, Angular introduce un nuovo control flow integrato nel template, più leggibile delle direttive *ngIf e *ngFor.

@if / @else

Esempio di codice

@for

Esempio di codice

L'espressione track è obbligatoria e migliora le performance.

@switch

Esempio di codice

Vantaggi

  • Sintassi più chiara e vicina a JavaScript
  • Migliori performance (non servono direttive)
  • track ed @empty integrati

Signals

I Signals (Angular 16+) sono il nuovo sistema di reattività: contenitori di valori che notificano automaticamente i cambiamenti.

Creare e leggere un signal

Esempio di codice

Signal in un componente

Esempio di codice

Computed signals

Esempio di codice

I Signals rendono il change detection molto più efficiente.

Change Detection

Il change detection è il meccanismo con cui Angular aggiorna il DOM quando i dati cambiano.

Come funziona

Angular controlla i componenti e, se rileva cambiamenti nei dati, aggiorna la vista. Di default usa la strategia Default, che controlla tutto l'albero dei componenti.

Strategia OnPush

Esempio di codice

Con OnPush, Angular controlla il componente solo quando:

  • Cambia un riferimento di un @Input
  • Si verifica un evento nel componente
  • Cambia un Signal usato nel template

Controllo manuale

Esempio di codice

OnPush + Signals è la combinazione consigliata per le massime performance.

Componenti Dinamici

I componenti dinamici vengono creati e inseriti a runtime, non in modo statico nel template.

Con NgComponentOutlet

Esempio di codice
Esempio di codice

Con ViewContainerRef

Esempio di codice

Utili per modali, widget configurabili e contenuti caricati in base ai dati.

Dependency Injection Avanzata

La DI di Angular è molto flessibile e supporta token, provider personalizzati e gerarchie.

InjectionToken

Esempio di codice

Tipi di provider

Esempio di codice

Iniettare con inject()

Esempio di codice

DI gerarchica

Un provider definito in un componente è disponibile solo per quel componente e i suoi figli, sovrascrivendo eventuali provider di livello superiore.

Router Avanzato

Funzionalità avanzate del Router per app complesse.

Lazy loading

Esempio di codice

Il lazy loading carica il codice solo quando serve, riducendo il bundle iniziale.

Route Guards

Esempio di codice

Resolver (precarica dati)

Esempio di codice

Query params

Esempio di codice

HTTP Interceptors

Gli interceptor intercettano tutte le richieste e risposte HTTP, ideali per autenticazione, logging e gestione errori.

Creare un interceptor (funzionale)

Esempio di codice

Registrare l'interceptor

Esempio di codice

Interceptor per gestione errori

Esempio di codice

Gli interceptor si eseguono in ordine per ogni richiesta uscente.

Form Avanzati

I Reactive Forms permettono validazione complessa, form dinamici e controllo totale.

FormBuilder e validatori

Esempio di codice

Mostrare gli errori

Esempio di codice

FormArray (campi dinamici)

Esempio di codice

Validatore personalizzato

Esempio di codice

State Management

La gestione dello stato centralizza i dati condivisi tra componenti.

Stato con un servizio + Signals

Esempio di codice

Usare lo store

Esempio di codice

Librerie dedicate

Per app molto grandi si usano librerie come NgRx (pattern Redux) o NGXS. Per la maggior parte dei casi, un servizio con Signals è sufficiente.

Animazioni in Angular

Angular offre un sistema di animazioni dichiarativo basato su stati e transizioni.

Configurazione

Esempio di codice

Definire un'animazione

Esempio di codice

Animazioni di lista

Con query() e stagger() si animano gli elementi di una lista in sequenza, per effetti fluidi all'ingresso.

Testing in Angular

Angular include strumenti per i test: Jasmine (framework) e Karma o Vitest (test runner).

Test di un componente

Esempio di codice

Test di un servizio

Esempio di codice

Eseguire i test

Esempio di codice

Si usano anche end-to-end test con strumenti come Playwright o Cypress.

Sicurezza in Angular

Angular include protezioni integrate contro le vulnerabilità web più comuni.

Protezione XSS automatica

Esempio di codice
'; }

innerHTML e sanitizzazione

Esempio di codice

Buone pratiche di sicurezza

  • ✅ Non usare bypassSecurityTrust... su input non fidati
  • ✅ Validare sempre i dati lato server (non solo nel client)
  • ✅ Usare HttpClient che protegge da XSRF/CSRF
  • ✅ Usare la Content Security Policy (CSP)
  • ✅ Mantenere Angular e le dipendenze aggiornate

Protezione XSRF

Esempio di codice

SSR e Hydration

Il Server-Side Rendering (SSR) genera l'HTML sul server, migliorando SEO e velocità di caricamento iniziale.

Aggiungere SSR a un progetto

Esempio di codice

Questo configura il rendering lato server con un server Express.

Vantaggi dell'SSR

  • 🔍 SEO migliore: i motori di ricerca vedono l'HTML completo
  • First Contentful Paint più veloce
  • 📱 Performance su dispositivi lenti

Hydration

La hydration è il processo con cui Angular "riprende" sul client l'HTML generato dal server, senza ricostruirlo da zero.

Esempio di codice

Incremental Hydration (Angular 19+)

Esempio di codice

L'SSR con hydration combina i vantaggi del rendering server (SEO, velocità) con l'interattività di una SPA.

Conclusione

Complimenti! 🎉 Hai completato il corso di Angular completo e gratuito in italiano: dai componenti e il data binding, al routing e i servizi, fino a RxJS, lazy loading, SSR e le ultime funzionalità di Angular 17+. Ora hai le basi per costruire applicazioni enterprise-grade.

Il modo migliore per consolidare Angular è costruire un progetto reale: crea una SPA con routing, chiamate HTTP e gestione dello stato. Rifai gli esempi, esplora la documentazione ufficiale e sperimenta con Angular Material.

E ora?

Hai già una solida base in TypeScript: il passo successivo naturale è approfondire React per confrontare i due approcci ai framework moderni, oppure tornare a esplorare tutti gli altri corsi disponibili. Se vuoi un percorso guidato personalizzato, posso seguirti con ripetizioni di informatica in presenza a Roma.

✏️ Provalo tu — leggi e modifica il codice Angular
Anteprima