我一直在弄清楚如何保护路由不被直接访问,并且发现每次访问组件时Resolve
都会触发。我创建了以下解析器:
export class LoginResolver implements Resolve<Boolean> {
constructor(private router: Router, private userService: UserService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Boolean> {
return this.userService.watchCurrentUser().map((currentUser) => {
if (currentUser !== null) {
this.router.navigate(['/']);
return null;
} else {
return true;
}
});
}
}
据我所知,解析器有效。如果我记录数据,它会显示我的期望,但是,即使第一个if语句成功(通过添加很多而不是if块进行测试),页面也不会离开。我基本上已经将代码复制出了路由器教程,所以不确定我错过了什么。有明显的错误吗?