路由为/ sim /:id
我正在使用Angular解析器向GET /api/sim/{id}
发出HTTP请求,以获取用于布局组件的单个数据(页面标题)。响应是一个很大的JSON对象,但我只需要一个数据。
然后在与该路由相关的主要组件中,我调度了一个ngrx动作,该动作触发一个效果,该效果执行相同的请求GET /api/sim/{id}
,并使用响应填充商店。
然后我使用ngrx选择器从商店中检索数据,然后填充视图(仅供参考,该视图使用了大量响应数据)。
这工作正常,但是我向同一端点发出2个HTTP请求。我怎样才能最好地避免这种情况?我不需要代码,只需一些指示即可。谢谢。
我正在使用Angular和ngrx的最新版本。
答案 0 :(得分:2)
TL; DR:使用解析器中的数据。
就是这样。
与其派遣一个动作来触发一个效应来获取数据并触发一个新动作来填充商店。...让解析器使用该数据来触发最后一个动作来填充商店。
看看this article了解更多想法。
更新:
这是另一个想法:在提供商中,将所有信息存储在路由器数据中。
鉴于您正在使用解析器仅存储title
属性(因为在父组件中需要的所有内容),并且可以通过this.router.snapshot.data
来访问ir:如果您存储整个数据,您还可以使用以下子控件从子组件中获取它:
this.router.parent.snapshot.data