使用路由之间共享的数据填充 ngrx 存储

Populating an ngrx store with data shared between routes

我有一个跨越多条路线的多页表格。所有路线都需要从 API 中与它们共享相同的数据。我可以将 API 的响应存储在 ngrx/store 中,并使用效果触发 API 调用。我的问题更多是关于在哪里发起 API 调用。 API 调用需要在用户通过身份验证后进行,这发生在我点击的第一条路线上(在访问多页面表单的第一部分之前)。我想出的两个选项是:

  1. 在每条路线的组件内触发效果意味着我每次访问路线时都必须请求信息。当用户未通过身份验证时,守卫将阻止访问所有页面。

  2. 监听一个 effect 中经过身份验证的成功操作,并向那里的 API 发出请求。

我确信两者都完全可以接受并且有它们的取舍。能多提点意见就好了!

第二种最好,在用户通过身份验证并允许其使用时按需请求信息更有意义。在守卫内部,正如你所说,你应该在 return true/of(true) 之前发送动作来加载信息,以表明可以激活路由。天真的方法会在您每次尝试激活受保护的路由时触发信息请求。