Passer boolean à partir d'observables observables
Je veux vérifier dans mon adminauthguard si l'utilisateur a défini un adminflag(en Firebase à l'aide de angularfire2)
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):Observable<boolean> | boolean {
return this.loginservice.af.auth.map((auth) => {
if(auth == null) {
return false;
} else {
this.membersservice.get(auth.uid).subscribe(users => {
if(users.admin == true) {
return true;
} else {
return false;
}
})
}
});
comment puis-je résoudre le observables observables à l'intérieur?
- Vous ne pouvez pas le faire.
- une idée de comment je peux résoudre ce problème, une autre façon?
- Quelque chose comme
af.auth.mergeMap(auth => !auth ? Observable.of(false) : membersservice.get(...).map(users => !!users.admin)).subscribe(...)
.
Vous devez vous connecter pour publier un commentaire.
Pas 1000% sûr si cela va fonctionner avec votre service des Observables, car je ne sais pas Firebase pour Angular2 exactement (uniquement iOS), mais de cette façon, vous créez une observable qui émet juste des valeurs basées sur les événements qui se produisent à l'intérieur de la clôture.
La seule chose que vous pouvez avoir besoin pour s'assurer (avec tests), c'est que vous n'avez pas non défini unis, par exemple, quelque chose comme async dangers où vous avez tous deux émettent le vrai et le faux.
J'ai besoin d'attendre que l'Utilisateur Abonnez-info avant d'exécuter n'importe quel composant sécurisé. J'utilise une solution similaire pour lastWhisper, de la mise en œuvre de canActivateChild et mise en routes: