我想在我的应用程序中疯狂地守卫角度。我找到了这段代码,但不明白为什么我们将user
映射到!!user
。map(user => !!user)
线的目的是什么?
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> {
return this.auth.user.pipe()
take(1),
map(user => !!user),
tap(loggedIn => {
if (!loggedIn) {
console.log('access denied')
this.router.navigate(['/login']);
}
})
)
!!
是将某些内容转换为布尔值的常用方法。
通过在map()
函数中两次应用 NOT 运算符 (!
(,它将用户映射到一个布尔值,然后用作tap()
函数中使用的loggedIn
。
用户很可能应该是具有用户数据的对象(具有真实值(。
我还假设如果您没有登录,用户将被null
或undefined
(具有虚假值(。