【问题标题】:disabling a deactivation guard when routing路由时禁用停用保护
【发布时间】:2019-07-02 05:56:15
【问题描述】:

我有一条具有以下流程的路线:用户从路线 A 导航到路线 B,这些路线位于不同的模块中,并且每个都有激活和停用保护。激活保护将用户重定向到模块中的最后一个导航点(它在 ngrx 中被记住),停用保护检查任何未保存的更改并在导航出之前提示用户。

路由 A -> 停用保护提示等待确认,用户单击是,导航继续

route B -> Activation Guard 启动,确定前一个点存在,发出router.navigateByUrl(previousUrlFromHistory) 并返回 false 以取消当前导航。

这里的问题是,在我的路由 B 激活防护中,当navigateByUrl 执行时,它认为它是来自路由 A 的全新导航循环,这反过来又会再次触发停用防护(循环)。

因此,对于这个调用,我需要在不执行任何停用保护的情况下临时路由,因为它是由重定向保护本身发出的安全导航。

有没有办法告诉路由器本身在没有警卫的情况下导航?例如:router.navigateByUrl(url, { checkDeactivate: false }); 或类似的东西?

我可以使用标志手动处理此问题,但如果存在路由器选项,我宁愿使用它。到目前为止我找不到任何东西。

【问题讨论】:

    标签: angular


    【解决方案1】:

    在这里回答我自己的问题。我看到 Angular 7 现在有可以传递的路由状态,所以我将把它作为路由数据传递,然后在我的 deactivationGuard 中查询标志,这应该很简单。谢天谢地,我们正在过渡到 Angular 7。

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 2019-11-12
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 2020-08-04
      • 2020-04-26
      相关资源
      最近更新 更多