📢 Je vous présente le livre Angular

  • 1) Il offre un contenu clair et concis, tout en couvrant une multitude de concepts d'Angular.
  • 2) Le livre est structurĂ© en trois niveaux : dĂ©butant, intermĂ©diaire et avancĂ©
  • 3) traite des pratiques les plus rĂ©centes d'Angular, comme les signaux, les vues diffĂ©rĂ©es, la gestion des flux, entre autres
  • 4) De plus, vous y trouverez plusieurs liens vers des exemples de code source pour approfondir vos connaissances en pratique.

Skip to content

Utiliser @Output pour communiquer avec un composant parent ​

Dans notre composant, nous souhaitons effectuer un événement. Par exemple, quand l'utilisateur clique sur un bouton, un compteur s'incrémente.

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

@Component({
  selector: 'count',
  template: `
    <p>{{n}}</p>
    <button (click)="up()"></button>
  `
})
export class CountComponent {
  n: number = 0;

  up() {
    this.n++;
  }
}

Nous mettons des parenthèses autour du nom de l'événement pour indiquer une valeur de sortie.

Envoyer la valeur en dehors du composant ​

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

@Component({
  selector: 'count',
  template: `
    <p>{{n}}</p>
    <button (click)="up()">Up</button>
  `
})
export class CountComponent {
  n: number = 0;
  @Output() numberChange: EventEmitter<number> = new EventEmitter();

  up() {
    this.n++;
    this.numberChange.emit(this.n);
  }

}

Deux importations :

  • EventEmitter : Emettre l'Ă©vĂ©nement aux composants parents
  • @Output : DĂ©corateur indiquant la propriĂ©tĂ© envoyant l'information.

La propriété numberChange est donc utilisé dans le template pour recevoir l'événement :

js
// composant parent
import {Component} from '@angular/core';

@Component({
  selector: 'app',
  template: `
    <div>
	    <count (numberChange)="multiplicate($event)"></count>
      {{result}}
	  </div>
  `
})
export class AppComponent {
  result: number = 0;

  multiplicate(val: number) {
    this.result = val * 2;
  }
}

Nous appelons donc multiplicate qui va juste multiplier la valeur du compteur par deux.

Chaque mois, recevez en avant-première notre newsletter avec les dernières actualités, tutoriels, astuces et ressources Angular directement par email !