2017-06-05 122 views
0

我有一个跨多个路由的多页表单。所有路线都需要与API共享的相同数据。我可以将API的响应存储在ngrx/store之内,并使用效果触发API调用。我的问题是关于在哪里启动API调用。 API调用需要在用户进行身份验证后进行,这发生在我访问的第一条路线上(在访问多页表单的第一部分之前)。我想出了这两个选项是:使用路由之间共享的数据填充ngrx存储

  1. 触发每条路线的组件内部的效果意思我只好每次我拜访的路线时间要求的信息。当用户未通过身份验证时,警卫将阻止所有页面可访问。

  2. 收听特效内的已验证成功操作并向API发出请求。

我敢肯定,两者都是完全可以接受的,并有他们的权衡。得到一些意见会很好!

回答

2

第二个将是最好的,当用户验证并允许使用它时,请求需要的信息ergo更有意义。如同你所说的那样,在守卫的内部,你应该派遣行动去加载信息,然后再返回true/of(true)来表明路线可以被激活。这种天真的做法会触发一个信息请求,试图启动守护路线。

+0

我在第二个选项旁边。另外,在加载数据的同时,您会建议在启动路由之前使用警卫等待或仅检查API是否在每个路由组件内部加载并显示微调器或其他内容? – maddockst

+0

通常我会在信息标记为加载时显示一个微调框:true在我的商店内。在我看来,这与将要呈现的组件与所请求的信息所具有的信息的功能/特性/关系密切相关。 –

+0

我明白你的观点。感谢您的指导! – maddockst

相关问题