ObservableからCanActivateに値を戻す方法がわからない
ナビゲーションを続行するには、Angular2 CanActivate Observableから値を取得できない
私はCanActivate実装を使用して、自分のサーバーにhttpリクエストを送信します。 (あれば)
これは、特定の条件に応じて、件名にそれをピックアップしてナビゲーションを継続する
をCanActivateに戻すことができ
を
を結果を配置します。
しかし、事は走る、
私はそのサブスクリプションから来
ブール値を取得する方法を見つけ出すように見えることはできません。
private isAdminSubj: Subject<boolean> = new Subject<boolean>();
private isAdmin: Observable<boolean> = this.isAdminSubj.asObservable();
private go:boolean = false;
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean{
/* to store and redirect after login if user not logged in */
let target_url: string = state.url;
this.verifyLoginForAdmin(target_url);
this.isAdminSubj.subscribe(user_authorized => { this.go = user_authorized;});
return this.go;
}
verifyLoginForAdmin(target_url: string){
if(this.authService.isLoggedin()){
let token_email =
this.authService
.jwt_helper
.decodeToken(localStorage.getItem(this.authService.jwt_name)).email;
this.authService.isAdmin(token_email)
.subscribe({
next: data => {
if(data)
this.isAdminSubj.next(true)
else{
this.router.navigate([ '/coding-blog' ]);
this.isAdminSubj.next(false);
}
},
error: error => console.log("CanActivate Error-->", error),
complete:() => console.log("complete")
})
}else
this.authService.targetUrl = target_url;
this.router.navigate([ '/projects' ]);
this.isAdminSubj.next(false);
}
}
のAuthService#isAdminは()である:
isAdmin(email: string): Observable<boolean>{
return this.getDbInfo
.getOneUserByEmail(email)
.map(res => res.json().data.admin);
}
私もCanActivate():Observable<boolean>
を試してみましたが、どこ購読し、値を取得する方法:
private isAdminSubj: Subject<boolean> = new Subject<boolean>();
private isAdmin: Observable<boolean> = this.isAdminSubj.asObservable();
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean>{
/* to store and redirect after login if user not logged in */
let target_url: string = state.url;
this.verifyLoginForAdmin(target_url);
return this.isAdmin;
}
チェックアウトのためのThanx。 私はそれを理解しているのであなたの提案を編集しましたが、それは私にとってはうまくいかなかったのです。 – wowiamhere
私は値を得るためにobservableを購読する場所を知りません。 – wowiamhere