.subscribe
n'est pas une chose propre à Angular2.
C'est une méthode qui vient de rxjs
qu'Angular utilise en interne.
Si vous vous imaginez vous abonner à une lettre d'information, chaque fois qu'il y a une nouvelle lettre d'information, elle sera envoyée chez vous (la méthode dans subscribe est appelée).
C'est ce qui se passe lorsque vous vous abonnez à une source de magazines ( qui s'appelle un Observable
en rxjs
bibliothèque)
Tous les AJAX
dans Angular utilisent rxjs
en interne et pour utiliser l'une d'entre elles, vous devez utiliser le nom de la méthode, par exemple get
et ensuite appeler "subscribe", parce que get
les retours et Observable
.
Aussi, en écrivant ce code <button (click)="doSomething()">
Angular utilise Observables
en interne et vous abonne à cette source d'événement, qui dans ce cas est une click
événement.
Revenons à notre analogie avec Observables
y newsletter stores
après votre abonnement, dès qu'il y a un nouveau magazine et aussi longtemps qu'il y en a un, ils vous l'envoient. à moins que vous n'alliez et unsubscribe
d'eux pour lequel vous devez vous souvenir du numéro d'abonnement ou de l'identifiant, qui en rxjs
Dans ce cas, ce serait comme :
let subscription = magazineStore.getMagazines().subscribe(
(newMagazine)=>{
console.log('newMagazine',newMagazine);
});
Et quand tu ne veux plus recevoir les magazines :
subscription.unsubscribe();
Il en va de même pour
this.route.paramMap
qui renvoie un Observable
et vous vous y abonnez.
Mon point de vue personnel est le suivant rxjs
était l'une des meilleures choses qui ont été apportées au monde JavaScript et c'est encore mieux dans Angular.
Il y a 150~ rxjs
(très similaires aux méthodes de lodash
) et celle que vous utilisez s'appelle switchMap
32 votes
Bienvenue dans la jungle;-) [indice : rxjs Observables]
2 votes
Pour en savoir plus sur rxjs, cliquez ici. bumbu.github.io/javavascript-observer-publish-subscribe-pattern
0 votes
Simplement, il exécute l'observation
0 votes
Subscribe(hero => this.hero = hero) -- si c'est un succès. Sinon, la partie de gestion des erreurs est également présente. l'exemple est : (error : any) => {console.log(error);} une autre chose que vous devez importer : import { Observable, observable } from '../../../node_modules/rxjs' ;