46

我指的是router-store ngrx项目https://github.com/ngrx/router-store)。

我不清楚如何使用这个项目...

例如,让我们从项目文档中获取以下示例:

store.dispatch(go(['/path', { routeParam: 1 }], { query: 'string' }));

这是要用作角度2路由器的替代品router.navigate(['/path...吗?

...还是仅在某些情况下才应使用ngrx路由器存储?(如果是这样的话?)

<a routerLink="/heroes"单击例如角度2路由器html链接时,ngrx路由器存储也会发生什么 

更笼统地说,有人可以解释一下ngrx路由器存储项目与使用普通的angular 2路由器相比有什么成就吗?

或者换个说法,除了角度2路由器之外,ngrx路由器存储还带来了什么?

编辑:关于ngrx的信息和样本的有趣来源当然是ngrx example-app(https://github.com/ngrx/example-app)。

我在那找到了对路由器存储的依赖,但是我找不到在应用程序中路由器存储的位置...

仅供参考,以下是在示例应用程序中有关路由器存储的注释:

@ ngrx / router-store使路由器状态在存储中保持最新状态,并将该存储用作路由器状态的唯一真实来源。

71

@ngrx/router-store存在,因此,它可能为专卖店是单一数据源的应用程序的路由状态。

没有它,将存在应用程序状态-当前路由-不在商店中表示。这意味着将无法使用DevTools进行时间旅行调试,因为存储中将没有任何状态表示路由,也没有任何动作表示路由更改。

router-store不更换角路由器; 它只是连接侦听器,以路由操作和路由器本身。

当您使用go动作创建者发出路由动作时"[Router] Go"会听到包含指定路径动作,然后该动作router-store会调用相应的路由器方法。router-store从路由器得知路由已更改时,它将发出一个"[Router] Update Location"表示路由更改的操作,并且该操作会看到已更新存储中的路由器状态。

如果不是使用go动作创建者,而是使用routerLink来实现路由更改,router-store则将听到更改并发出一个"[Router] Update Location"动作,动作将看到商店的路由器状态已更新。

因此,无论是通过操作还是通过更传统的链接来更改路由,存储都将始终包含路由器状态。

使用"[Router] Update Location"代表路由更改动作,您可以通过DevTools撤消所述路由更改-如果商店中未显示路由器状态,则无法实现。

如果您尚未使用Redux DevTools,建议您将它们检出:

来自  https://stackoverflow.com/questions/42028681/understanding-the-purpose-of-the-ngrx-router-store-project-as-compared-to-only-u