1

在我的应用程序中,我有从包(节点模块)公开的路由。所以我不能对节点模块内定义的路由使用 canActivate 或 canDeactivate 。

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

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

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

4

1 回答 1

0

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

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

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

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

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

于 2018-10-11T14:07:44.597 回答