Les bases Angular 19
Un petit aide-mémoire pour t'aider à te rappeler des bases d'Angular 19.
Installation et Configuration
Prérequis
Assure-toi d'avoir Node.js (version 18 ou ultérieure) et npm installés.
Installation de l'interface en ligne de commande Angular (CLI)
npm install -g @angular/cli
Création d'un nouveau projet
ng new nom-du-projet
cd nom-du-projet
Lancement du serveur de développement
ng serve
Structure du Projet
Un projet Angular typique comprend les dossiers et fichiers suivants :
src/
: Contient le code source de l'application.app/
: Contient les composants, services, modules, etc.assets/
: Contient les ressources statiques (images, fichiers, etc.).environments/
: Contient les configurations pour différents environnements (développement, production).
angular.json
: Fichier de configuration principal du projet Angular.
Composants
Création d'un composant
ng generate component nom-du-composant
Structure d'un composant
nom-du-composant.component.ts
: Contient la logique du composant.nom-du-composant.component.html
: Contient le template HTML.nom-du-composant.component.css
: Contient les styles CSS.nom-du-composant.component.spec.ts
: Contient les tests unitaires.
Services
Création d'un service
ng generate service nom-du-service
Utilisation d'un service
import { NomDuService } from './nom-du-service.service';
constructor(private nomDuService: NomDuService) {}
Modules
Module principal
AppModule
(défini dans app.module.ts
).
Création d'un module
ng generate module nom-du-module
Importation d'un module
import { NomDuModule } from './nom-du-module/nom-du-module.module';
@NgModule({
imports: [NomDuModule],
// ...
})
export class AppModule {}
Routing
Définis les routes dans un tableau de type Routes
:
import { Routes, RouterModule } from '@angular/router';
import { NomDuComposant } from './nom-du-composant/nom-du-composant.component';
const routes: Routes = [
{ path: 'chemin', component: NomDuComposant },
{ path: '', redirectTo: '/chemin', pathMatch: 'full' },
{ path: '**', component: PageNotFoundComponent },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
Data Binding
Définitions
- L'interpolation permet d'afficher des valeurs de composant dans le template HTML en utilisant la syntaxe
{{ expression }}
. Par exemple,{{ nom }}
affichera la valeur de la propriéténom
du composant. - Le property binding permet de lier une propriété d'un élément HTML à une propriété de composant en utilisant la syntaxe
[propriete]="expression"
. Par exemple,<img [src]="urlImage">
lie la propriétésrc
de l'élémentimg
à la propriétéurlImage
du composant. - L'event binding permet de lier un événement d'un élément HTML à une méthode de composant en utilisant la syntaxe
(evenement)="expression"
. Par exemple,<button (click)="onClick()">
appelle la méthodeonClick
du composant lorsque le bouton est cliqué. - Le two-way binding permet de lier une propriété de composant à une propriété d'un élément HTML de manière bidirectionnelle, en utilisant la directive
ngModel
. Par exemple,<input [(ngModel)]="nom">
lie la propriéténom
du composant à la valeur de l'élémentinput
, permettant des mises à jour dans les deux sens.
Résumé
- Interpolation :
{{ expression }}
- Property Binding :
[property]="expression"
- Event Binding :
(event)="expression"
- Two-way Binding :
[(ngModel)]="expression"
(nécessite le moduleFormsModule
)
Pipes
Pipes intégrés
{{ valeur | date }}
: Formate une date.{{ valeur | uppercase }}
: Convertit en majuscules.{{ valeur | lowercase }}
: Convertit en minuscules.{{ valeur | titlecase }}
: Met en majuscules la première lettre de chaque mot.{{ valeur | currency:'EUR':'symbol':'1.2-2' }
: Formate une valeur en monnaie (exemple en euros, avec symbole € et 2 décimales).{{ valeur | percent }}
: Formate un nombre en pourcentage.{{ valeur | decimal:'1.2-2' }}
: Formate un nombre en décimal (min 1 chiffre, 2 après la virgule).{{ valeur | number:'1.0-3' }}
: Formate un nombre avec un nombre de décimales spécifié.{{ valeur | json }}
: Convertit un objet en JSON formaté.{{ valeur | slice:1:3 }}
: Extrait une sous-chaîne (de l'index 1 à 3).{{ array | async }}
: Attend la résolution d'unePromise
ou d'unObservable
.{{ valeur | i18nSelect:mapping }}
: Sélectionne une valeur en fonction d'une clé locale.{{ valeur | i18nPlural:mapping }}
: Gère les pluriels en fonction de la valeur.
Création d'un pipe personnalisé
ng generate pipe nom-du-pipe
Formulaires
Template-driven Forms
Les Template-driven Forms utilisent des directives Angular dans le template HTML pour gérer les formulaires.
<form #f="ngForm" (ngSubmit)="onSubmit(f)">
<input ngModel name="username" required>
<button type="submit">Submit</button>
</form>
Reactive Forms
Les Reactive forms utilisent des classes TypeScript pour créer et gérer les formulaires de manière plus programmatique et réactive.
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
export class NomDuComposant {
myForm: FormGroup;
constructor(private fb: FormBuilder) {
this.myForm = this.fb.group({
username: ['', Validators.required]
});
}
onSubmit() {
if (this.myForm.valid) {
console.log(this.myForm.value);
}
}
}
HTTP Client
Utilisation du HttpClient
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [HttpClientModule],
// ...
})
export class AppModule {}
Injectez HttpClient
dans votre service ou composant
import { HttpClient } from '@angular/common/http';
constructor(private http: HttpClient) {}
getData() {
return this.http.get('url-de-l-api');
}
Observables et RxJS
Définition
Un Observable est un flux de données asynchrones utilisé pour :
- Requêtes HTTP (
HttpClient
) - Événements utilisateur
- Communication entre composants
Création et souscription
import { Observable } from 'rxjs';
const monObservable = new Observable(observer => {
observer.next('Valeur');
observer.complete();
});
monObservable.subscribe(val => console.log(val));
Opérateurs essentiels
map(val => val * 2)
: Transformationfilter(val => val > 10)
: FiltragedebounceTime(500)
: Limite les appels rapides (ex. recherche)merge(obs1, obs2)
: Fusionne plusieurs Observables
Observables vs Promises
Observables | Promises |
---|---|
Émettent plusieurs valeurs | Une seule valeur |
Annulables (unsubscribe() ) | Non annulables |
Fonctionnent par paresse | Exécutées immédiatement |
Utilisation avec HttpClient
this.http.get('https://api.exemple.com/data').subscribe(data => console.log(data));
Annulation d'un Observable
const sub = this.http.get('url').subscribe();
sub.unsubscribe(); // Stoppe l’écoute
Tests
Tests unitaires
- Utilisez Jasmine et Karma (configurés par défaut).
- Les fichiers de test se terminent par
.spec.ts
.
Tests de bout en bout (E2E)
- Utilisez Protractor ou Cypress pour les tests E2E.
Déploiement
Build pour production
ng build --configuration=production
Cela génère les fichiers optimisés dans le dossier dist/
.
Ressources
Documentation Officielle Angular
Tutoriels et Cours en Ligne
Communauté et Forums
Fiches à télécharger
Tu peux télécharger ce devento en plusieurs formats :
Cette fiche a été publiée en premier sur https://nathaniel-vaur-henel.github.io/ par Nathaniel Vaur Henel sous licence Attribution 4.0 International