无法导航`router.navigate`

时间:2017-04-09 14:52:31

标签: angular

我一直在弄清楚如何保护路由不被直接访问,并且发现每次访问组件时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块进行测试),页面也不会离开。我基本上已经将代码复制出了路由器教程,所以不确定我错过了什么。有明显的错误吗?

0 个答案:

没有答案