Angular 6和Firestore应用程序。
我正在尝试使用返回布尔值的AuthGuard
方法来构建canActivate()
服务。布尔值基于名为UserAuthService
的{{1}}属性。
问题在于isAdmin
在我的canActivate()
有时间为UserAuthService
属性分配值之前执行。因此isAdmin
返回为isAdmin
。
我尝试使用undefined
和subscribe
和.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