在我的应用程序中,我从包(节点模块)暴露了路由。因此,我无法对节点模块内部定义的路由使用canActivate或canDeactivate。
因此,我开始订阅我的应用程序组件中的所有路由更改,并根据条件将用户重定向到其他路由。
由于条件具有API调用,因此路由更改不会在navigationStart中暂停,而是会完成到其他页面的路由,并且一旦API调用成功,重定向就会发生在其他路由上。
我该如何处理?无论如何,在API调用之后,是否可以在navigationStart中暂停路由更改并启用路由,或者是否有其他方法为所有路由(包括来自节点模块的路由)定义canActivate。
答案 0 :(得分:0)
是的,通过使用解析器,您可以实现
您需要首先创建解析器服务,该服务将实现“ Resolve”界面。
在resolve函数中,进行API调用。
并在这样的路由声明中添加服务=> 解决:{data:ResolveService}
因此,直到进行了API调用并且不返回数据,它才会启动navigationStart 请看这篇文章 https://codeburst.io/understanding-resolvers-in-angular-736e9db71267