可以停用,而子路线无效

时间:2018-12-06 04:39:48

标签: angular angular6 router auth-guard

我的路由如下:

{
  path: "home",
  children: [{
    path: "dashboard",
    children: [{
      path: "user",
      canDeactivate: [CanWeDeactivateThis]
    }]
  }]
}

路由中定义了一些组件,上面只是一个简单的快照。 添加组件时,我得到的组件为null可以在用户路径中停用,但如果将其添加到仪表板路径,则可以很好地工作。 在仪表板上添加内容对我来说不起作用,因为我在仪表板上有多个子级,并且如果用户也导航到这些子级,则需要显示确认。

不确定如何解决此问题。

角度版本为6.1.0

我关注了this thread,但没有帮助。

有人可以帮忙吗?

顺便说一句,上面的路由定义是延迟加载的角度模块的一部分。

1 个答案:

答案 0 :(得分:0)

{
  path: "home",
  children: [{
    path: "dashboard",
    children: [{
      path: "user",
      component : "user",
      canDeactivate: [CanWeDeactivateThis]
    }]
  }]
}

您应该为子代添加组件名称。如果要将canDeactivate方法应用于所有子级,也可以尝试下面的代码。

{
      path: "home",
      children: [{
        path: "dashboard",
        canDeactivate: [CanWeDeactivateThis],
        children: [{
          path: "user",
          component : "user"          
        }]
      }]
    }

If the feature module is loaded asynchronously, the CanLoad guard is checked before the module is loaded. If any guard returns false, pending guards that have not completed will be canceled, and the entire navigation is canceled.因此,请检查您是否也有任何CanLoad保护器。