Aller au contenu

C'est quoi RxJS ?

RxJS permet de faire de la programmation réactive dans Angular.

RxJS nous apporte la notion d’Observable et d’operators. Un Observable est un flux d’évĂšnements sur lequel on peut s’abonner pour rĂ©agir Ă  chaque fois qu’un Ă©vĂšnement passe. Les operators permettent de manipuler les Ă©vĂšnements des Observable pour les transformer, les combiner, les filtrer, etc.

Le flux des Observable sont, par dĂ©faut, fermĂ©s. Cela signifie que si on ne s’abonne pas Ă  un Observable, on ne recevra pas les Ă©vĂšnements.

Dans Angular, RxJS est beaucoup utilisé :

  • Dans les requĂȘtes HTTP
  • Dans la manipulation des routes
  • Dans les formulaires
  • Et autres

CrĂ©er et lire les donnĂ©es d’un Observable

Il existe beaucoup d’opĂ©rateurs pour crĂ©er des Observable, interval en est un exemple et Ă©met un nombre dans un intervalle de temps donnĂ©.

@Component({
  template: `
    <p>Counter: {{counter$ | async}}</p>
  `
})
export class MyComponent {
  counter$ = interval(1000);
}

Ici, counter$ est un Observable qui Ă©met un nombre toutes les secondes. Pour afficher la valeur de counter$, il faut utiliser le pipe async qui permet de souscrire Ă  l’Observable et de se dĂ©sabonner automatiquement lorsque le composant est dĂ©truit.

CrĂ©er une valeur dĂ©rivĂ©e d’un Observable

@Component({
  template: `
    <p>Counter: {{counter$ | async}}</p>
    <p>Double Counter: {{doubleCounter$ | async}}</p>
  `
})
export class MyComponent {
  counter$ = interval(1000);
  doubleCounter$ = this.counter$.pipe(
    map(value => value * 2));
}

Ici, doubleCounter$ est un Observable qui Ă©met un nombre toutes les secondes, mais qui est le double de counter$. GrĂące Ă  l’opĂ©rateur map, on transforme la valeur de counter$ avant qu’elle soit Ă©mise par doubleCounter$.