我想在我的应用程序中创建角度路线守卫。我找到了这段代码,但不明白为什么我们映射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']); } }) )
1 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
!! 是将某些内容转换为布尔值的常用方法。
通过!在map()函数中两次应用 NOT 运算符 ( ) ,它将用户映射到一个布尔值,然后将loggedIn其用作tap()函数中使用的那个。
很可能用户应该是一个带有用户数据的对象(它有一个真实的值)。
我还假设如果您未登录,则用户将是nullor undefined(具有虚假值)。
添加回答
举报
0/150
提交
取消
