0% ont trouvé ce document utile (0 vote)
52 vues11 pages

Tutorial Angular 4 5 6

Transféré par

guennaikram2017
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
52 vues11 pages

Tutorial Angular 4 5 6

Transféré par

guennaikram2017
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Tutorial : Gestion des components

Partie : 4

Composition des composants dans Angular


La composition des composants dans Angular consiste à organiser plusieurs composants
pour créer une application modulaire, réutilisable et bien structurée. Chaque composant joue
un rôle spécifique, et ils interagissent les uns avec les autres.

1. Création de composants imbriqués

Les composants Angular peuvent être imbriqués : un composant parent peut inclure un ou
plusieurs composants enfants.

Exemple :

Créons une application avec un composant parent et un composant enfant.

1. Générer les composants :

bash

ng generate component parent


ng generate component child

2. Composant enfant ([Link]) :

typescript

import { Component } from '@angular/core';

@Component({
selector: 'app-child',
template: `
<p>Je suis un composant enfant !</p>
`,
styles: [`
p {
color: blue;
font-style: italic;
}
`]
})
export class ChildComponent {}

3. Composant parent ([Link]) : Ajoutez le sélecteur du composant


enfant (<app-child>) dans le template du parent :
html

<h1>Composant Parent</h1>
<app-child></app-child> <!-- Appel du composant enfant -->

4. Résultat : Le navigateur affiche le contenu du composant parent et du composant


enfant :

Composant Parent
Je suis un composant enfant !

2. Passage de données du parent vers l'enfant

Le decorator @Input permet de transmettre des données d’un composant parent à un


composant enfant.

Exemple :

1. Dans le composant enfant ([Link]) : Ajoutez une propriété décorée


avec @Input pour recevoir des données :

typescript

import { Component, Input } from '@angular/core';

@Component({
selector: 'app-child',
template: `
<p>Message du parent : {{ parentMessage }}</p>
`
})
export class ChildComponent {
@Input() parentMessage!: string; // Propriété venant du parent
}

2. Dans le composant parent ([Link]) : Passez une valeur à l’enfant


via un binding de propriété :

html

<h1>Composant Parent</h1>
<app-child [parentMessage]="'Bonjour, enfant !'"></app-child>

3. Résultat :

bash

Composant Parent
Message du parent : Bonjour, enfant !

3. Émission d’événements de l’enfant vers le parent


Le decorator @Output permet à un composant enfant d'envoyer des données ou des
événements au composant parent.

Exemple :

1. Dans le composant enfant ([Link]) : Utilisez @Output et un


EventEmitter pour envoyer un événement au parent :

typescript

import { Component, Output, EventEmitter } from '@angular/core';

@Component({
selector: 'app-child',
template: `
<button (click)="notifyParent()">Notifier le parent</button>
`
})
export class ChildComponent {
@Output() notify = new EventEmitter<string>();

notifyParent() {
[Link]('Message de l’enfant !');
}
}

2. Dans le composant parent ([Link]) : Capturez l’événement émis


par l’enfant avec (notify) :

html

<h1>Composant Parent</h1>
<app-child (notify)="handleNotification($event)"></app-child>

3. Dans le composant parent ([Link]) : Implémentez la méthode


appelée lorsqu’un événement est capturé :

typescript

import { Component } from '@angular/core';

@Component({
selector: 'app-parent',
templateUrl: './[Link]'
})
export class ParentComponent {
handleNotification(message: string) {
[Link]('Notification reçue :', message);
}
}

4. Résultat : Lorsque vous cliquez sur le bouton, le message "Message de l’enfant !"
s'affiche dans la console.
4. Composition hiérarchique

Angular vous permet de créer une structure hiérarchique :

• AppComponent : Composant racine.


• Sous-composants : Divisez les sections de votre application (en-tête, pied de page,
navigation, contenu, etc.) en plusieurs composants.

Exemple d'organisation hiérarchique :

markdown

AppComponent
├── HeaderComponent
├── FooterComponent
└── ContentComponent
├── SidebarComponent
└── MainContentComponent

Avantages de la composition des composants

1. Réutilisabilité : Les composants peuvent être réutilisés dans plusieurs parties de


l’application.
2. Lisibilité : Division du code en parties logiques et cohérentes.
3. Modularité : Les composants sont indépendants et peuvent être testés séparément.
Partie : 5

Contrôle de flux dans les composants Angular : *ngIf


En Angular, la directive structurelle *ngIf est utilisée pour afficher ou masquer des éléments
HTML dynamiquement en fonction d'une condition.

1. Syntaxe de base de *ngIf

La directive *ngIf évalue une expression booléenne. Si l'expression est true, l'élément est
affiché ; sinon, il est supprimé du DOM.

Exemple :

html

<div *ngIf="condition">
Ce texte est affiché si la condition est vraie.
</div>

2. Utiliser *ngIf dans un composant

1. Composant TypeScript : Déclarez une propriété pour la condition.

typescript

import { Component } from '@angular/core';

@Component({
selector: 'app-mon-composant',
templateUrl: './[Link]',
})
export class MonComposant {
afficherTexte: boolean = true; // Variable conditionnelle
}

2. Template HTML : Ajoutez *ngIf pour conditionner l'affichage d'un élément.

html

<button (click)="afficherTexte = !afficherTexte">Afficher /


Masquer</button>

<p *ngIf="afficherTexte">Ce texte peut être affiché ou masqué.</p>

3. Alternative avec else


Angular permet d'utiliser une alternative avec la syntaxe else. Cela affiche un autre élément
lorsque la condition est fausse.

Exemple :

html

<div *ngIf="afficherTexte; else texteAlternatif">


Ce texte est affiché si afficherTexte est vrai.
</div>

<ng-template #texteAlternatif>
<p>Ce texte est affiché si afficherTexte est faux.</p>
</ng-template>

4. Combinaison avec then et else

Pour gérer des flux complexes, vous pouvez utiliser *ngIf avec then et else.

Exemple :

html

<div *ngIf="condition; then blocVrai; else blocFaux"></div>

<ng-template #blocVrai>
<p>Condition vraie !</p>
</ng-template>

<ng-template #blocFaux>
<p>Condition fausse.</p>
</ng-template>

5. Différence avec les classes CSS

Contrairement à l'utilisation de classes CSS pour masquer un élément (display: none),


*ngIf supprime complètement l'élément du DOM lorsqu'il n'est pas affiché. Cela améliore les
performances en réduisant les calculs inutiles.

6. Exemple complet

1. Composant TypeScript :

typescript

import { Component } from '@angular/core';

@Component({
selector: 'app-exemple',
templateUrl: './[Link]',
})
export class ExempleComponent {
utilisateurConnecte: boolean = false;

seConnecter() {
[Link] = true;
}

seDeconnecter() {
[Link] = false;
}
}

2. Template HTML :

html

<div *ngIf="utilisateurConnecte; else nonConnecte">


<p>Bienvenue, utilisateur !</p>
<button (click)="seDeconnecter()">Se déconnecter</button>
</div>

<ng-template #nonConnecte>
<p>Vous n'êtes pas connecté.</p>
<button (click)="seConnecter()">Se connecter</button>
</ng-template>

Résultat :

• Si utilisateurConnecte est true : Affiche "Bienvenue, utilisateur !".


• Si utilisateurConnecte est false : Affiche "Vous n'êtes pas connecté."

7. Astuce : Opérateur logique

Vous pouvez utiliser des opérateurs logiques pour combiner plusieurs conditions.

Exemple :

html

<div *ngIf="utilisateurConnecte && roleAdmin">


<p>Bienvenue, administrateur !</p>
</div>

*ngIf est une directive puissante pour le contrôle de flux dans Angular. Elle permet de gérer
dynamiquement l'affichage des éléments de l'interface en fonction des données de
l'application.
Partie : 6

Contrôle de flux dans Angular : *ngFor


La directive structurelle *ngFor en Angular est utilisée pour parcourir des collections (comme
des tableaux) et afficher des éléments répétés dans le DOM pour chaque élément de la
collection.

1. Syntaxe de base de *ngFor

La syntaxe typique de *ngFor est :

html

<div *ngFor="let item of items">


{{ item }}
</div>

• item : La variable locale qui représente chaque élément de la collection.


• items : La collection (tableau, liste, etc.) à parcourir.

2. Utiliser *ngFor dans un composant

1. Composant TypeScript : Déclarez une collection dans le composant.

typescript

import { Component } from '@angular/core';

@Component({
selector: 'app-mon-composant',
templateUrl: './[Link]',
})
export class MonComposant {
fruits: string[] = ['Pomme', 'Banane', 'Orange', 'Mangue'];
}

2. Template HTML : Utilisez *ngFor pour parcourir le tableau :

html

<ul>
<li *ngFor="let fruit of fruits">
{{ fruit }}
</li>
</ul>

Résultat :
diff

- Pomme
- Banane
- Orange
- Mangue

3. Accéder à l'index des éléments

Vous pouvez accéder à l'index de chaque élément à l'aide de let i = index.

Exemple :

html

<ul>
<li *ngFor="let fruit of fruits; let i = index">
{{ i + 1 }}. {{ fruit }}
</li>
</ul>

Résultat :

markdown

1. Pomme
2. Banane
3. Orange
4. Mangue

4. Utilisation des propriétés supplémentaires

Angular fournit plusieurs variables locales utiles dans *ngFor :

• index : L’index de l’élément courant.


• first : true si c’est le premier élément.
• last : true si c’est le dernier élément.
• even : true si l’index est pair.
• odd : true si l’index est impair.

Exemple :

html

<ul>
<li *ngFor="let fruit of fruits; let i = index; let isEven = even">
<span *ngIf="isEven">(Pair) </span>{{ i + 1 }}. {{ fruit }}
</li>
</ul>

5. Parcours d'objets complexes


Pour des objets avec des propriétés, utilisez le binding pour accéder aux valeurs.

Exemple :

1. Composant TypeScript :

typescript

personnes = [
{ nom: 'Alice', age: 25 },
{ nom: 'Bob', age: 30 },
{ nom: 'Charlie', age: 35 },
];

2. Template HTML :

html

<ul>
<li *ngFor="let personne of personnes">
{{ [Link] }} - {{ [Link] }} ans
</li>
</ul>

Résultat :

diff

- Alice - 25 ans
- Bob - 30 ans
- Charlie - 35 ans

6. Suivi des éléments avec trackBy

Par défaut, Angular recrée chaque élément du DOM lorsque la collection change, même si
certains éléments n'ont pas changé. Pour améliorer les performances, utilisez une fonction
trackBy pour identifier les éléments de manière unique.

Exemple :

1. Composant TypeScript :

typescript

personnes = [
{ id: 1, nom: 'Alice' },
{ id: 2, nom: 'Bob' },
{ id: 3, nom: 'Charlie' },
];

trackById(index: number, personne: any): number {


return [Link];
}
2. Template HTML :

html

<ul>
<li *ngFor="let personne of personnes; trackBy: trackById">
{{ [Link] }}
</li>
</ul>

7. Combinaison avec *ngIf

Vous pouvez combiner *ngFor et *ngIf pour afficher des éléments conditionnellement.

Exemple :

html

<ul>
<li *ngFor="let fruit of fruits" *ngIf="fruit !== 'Orange'">
{{ fruit }}
</li>
</ul>

Astuce : Pour éviter une combinaison confuse, utilisez une ng-container :

html

<ng-container *ngFor="let fruit of fruits">


<li *ngIf="fruit !== 'Orange'">{{ fruit }}</li>
</ng-container>

Avantages de *ngFor

• Simplifie la création d'éléments répétitifs.


• Gère efficacement les collections dynamiques.
• Fournit des fonctionnalités avancées comme trackBy pour améliorer les
performances.

*ngFor est une directive essentielle pour gérer des données dynamiques et construire des
interfaces réactives dans Angular.

Vous aimerez peut-être aussi