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