角6:转移isAdmin?从AuthService到AuthGuard canActivate()方法的值

时间:2018-08-27 22:59:29

标签: angular routing google-cloud-firestore auth-guard

Angular 6和Firestore应用程序。

我正在尝试使用返回布尔值的AuthGuard方法来构建canActivate()服务。布尔值基于名为UserAuthService的{​​{1}}属性。

问题在于isAdmin在我的canActivate()有时间为UserAuthService属性分配值之前执行。因此isAdmin返回为isAdmin

我尝试使用undefinedsubscribe.map,但无济于事。我知道我做错了什么,但我无法查明是什么。

是否有一种方法可以强制.pipe(map => ())等待canActivate()被分配一个值?

这是代码。

isAdmin

还有// app.routing.ts import { AuthGuardService as AuthGuard } from './auth-guard.service'; const appRoutes: Routes = [ { path: 'admin', component: AdminComponent, canActivate: [AuthGuard] } ] 服务:

AuthGuard

还有// auth-guard.service.ts export class AuthGuardService implements CanActivate { constructor(public userauth: UserAuthService, public router: Router) {} canActivate(): boolean { if (this.userauth.isAdmin === true) { return true; } else { this.router.navigate(['login']); return false; } } }

UserAuthService

0 个答案:

没有答案