我想在我的应用程序中加入角度路线守卫。我找到了这段代码,但不明白为什么我们将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']);
}
})
)
答案 0 :(得分:3)
!!
是将某些内容转换为布尔值的常用方法。
通过在!
函数中两次应用NOT运算符(map()
),它将用户映射到一个布尔值,然后将该布尔值用作loggedIn
}}功能。
很可能该用户应该是具有userdata(具有真实值)的对象。
我还假设,如果您尚未登录,则用户将是tap()
或null
(值是虚假的)。