如何在NavigationStart路由器事件中暂停路线更改

时间:2018-08-24 19:43:23

标签: routing angular5 angular2-routing angular-route-guards

在我的应用程序中,我从包(节点模块)暴露了路由。因此,我无法对节点模块内部定义的路由使用canActivate或canDeactivate。

因此,我开始订阅我的应用程序组件中的所有路由更改,并根据条件将用户重定向到其他路由。

由于条件具有API调用,因此路由更改不会在navigationStart中暂停,而是会完成到其他页面的路由,并且一旦API调用成功,重定向就会发生在其他路由上。

我该如何处理?无论如何,在API调用之后,是否可以在navigationStart中暂停路由更改并启用路由,或者是否有其他方法为所有路由(包括来自节点模块的路由)定义canActivate。

1 个答案:

答案 0 :(得分:0)

是的,通过使用解析器,您可以实现

  1. 您需要首先创建解析器服务,该服务将实现“ Resolve”界面。

  2. 在resolve函数中,进行API调用。

  3. 并在这样的路由声明中添加服务=> 解决:{data:ResolveService}

  4. 因此,直到进行了API调用并且不返回数据,它才会启动navigationStart 请看这篇文章 https://codeburst.io/understanding-resolvers-in-angular-736e9db71267