2

我的路由如下:

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

路由中定义了组件,上面只是一个简单的快照。当我添加可以在用户路径中停用时,我将组件设为 null,但如果我将它添加到仪表板路径中,它运行良好。添加仪表板对我不起作用,因为我在仪表板上有多个孩子,如果用户也导航到他们,我需要显示确认。

不知道如何解决这个问题。

角度版本是 6.1.0

我关注了这个线程但没有帮助。

有人可以帮忙吗?

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

4

1 回答 1

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"          
        }]
      }]
    }

如果功能模块是异步加载的,则在加载模块之前会检查 CanLoad 防护。如果任何守卫返回 false,则将取消尚未完成的待处理守卫,并取消整个导航。因此,请检查您是否也有任何 CanLoad 防护。

于 2018-12-06T06:20:18.807 回答