我有一条路由,其流程如下:用户从路由A导航到路由B,这些路由位于不同的模块中,每个模块都有激活和停用保护。激活防护将用户重定向到模块内的最后一个导航点(在ngrx中已被记住),激活防护将检查是否有未保存的更改,并在导航之前提示用户。
路线A->停用防护提示待确认,用户单击“是,导航继续”
路线B->激活保护程序启动,确定先前的点存在,发出router.navigateByUrl(previousUrlFromHistory)
,然后返回false以取消当前导航。
这里的问题是,在navigateByUrl
执行时,在我的路线B激活保护中,它认为它是从路线A开始的全新导航周期,这又再次触发了停用保护(周期性)。
因此,对于此调用,我需要临时路由而不执行任何停用防护,因为这是重定向防护本身发布的安全导航。
有没有一种方法可以告诉路由器本身无需保护就可以导航?例如:router.navigateByUrl(url, { checkDeactivate: false });
或类似的东西?
我可以使用标志手动处理此问题,但宁愿使用路由器选项(如果存在)。到目前为止我什么都找不到。
答案 0 :(得分:0)
在这里回答我自己的问题。我看到Angular 7现在具有可以传递的路由状态,因此我将其作为路由数据传递,然后在我的deactivationGuard中查询标志,这应该很简单。幸运的是,我们正在过渡到Angular 7。