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$
.