完成已重定向后,Guard不会重定向

时间:2018-03-28 13:49:37

标签: angular ngrx-store ngrx-router-store

我在保护路由方面遇到了一些奇怪的问题。 情况如下: 页面A有一个警卫,警卫检查它是否拥有访问该页面的所有内容。如果不是,它将重定向到页面B以获得它所需的一切,例如选择客户端。 当该用户在没有正确信息的情况下导航回到页面A时,它将被重定向回到页面B. 这是一切都出错的地方,因为不允许用户进入Page A我从警卫处返回一个错误并进行重定向。 但是我的商店说路线是A页,但是因为我拒绝导航,我仍然在第B页。

这种情况在代码中如下所示:

保护

canActivate(route: ActivatedRouteSnapshot,
              state: RouterStateSnapshot): boolean {

    if (got_what_i_need) {
      return true;
    } else {

        this.store.dispatch(new RouterActions.Go({
          path: ['pageB']




    }
    return false;

  }

路线

const appRoutes: Routes = [
  { path: RoutePaths.pageA, loadChildren: './pageA', canActivate: [PortalDetectionGuard] },
  { path: RoutePaths.PageB, loadChildren: './pageB'},

任何人都知道我在这里做错了什么? 此外,每当我返回false时,当前页面也不会被破坏或重新初始化。

提前致谢!

1 个答案:

答案 0 :(得分:0)

尝试使用其他导航策略:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    if (got_what_i_need) {
      return true;
    } else {
      this.router.navigate(['page-B'])
    }
    return false;
}

您需要在Guard的构造函数中插入路由器。

  constructor(private navigationService: NavigationService)

如果这不起作用,也许" got_what_i_need"部分是原因。