J'ai cette méthode dans une classe de fournisseur authProvider
:
getUser() {
return this.afAuth.authState.subscribe(user => {
return user;
});
}
Je voudrais m'inscrire dans une classe différente, quelque chose comme:
this.authProvider.getUser().subscribe(user => console.log(user));
des idées comment retourner un Observable
dans la méthode getUser()
?
Votre authState
est déjà observable. Il vous suffit de renvoyer votre authState
et de vous abonner à une autre fonction. Dans la fonction pour tout autre travail, vous pouvez utiliser la fonction RxJS # map.
getUser() : Observable {
return this.afAuth.authState.map(...);
}
....
login() {
getUser().subscribe(user => {
return user;
});
}
Ne vous abonnez pas dans la fonction getUser
. Il suffit de retourner l'observable.
getUser() {
return this.afAuth.authState
}
Vous pouvez faire quelque chose comme ça. Ensuite, dans votre composant, celui qui appelle cette fonction, vous pouvez vous abonner à cet observable.
getUser(): Observable<any> {
return Observable.create( (observer: Observer<string>) => {
this.afAuth.authState.subscribe(user => {
observer.next(user);
}, (err) => observer.error("error"));
});
}
Ashley
Vous devez définir le type de retour comme observable
getUser(): Observable<Type> {
return this.afAuth.authState;
});
}
Vous pouvez retourner la fonction directement et vous y abonner dans une autre classe.
getUser() {
return this.afAuth.authState();
}
Vous pouvez considérer les observables comme des fonctions appelées par abonnement.
this.authProvider.getUser().subscribe(user => console.log(user));