我正在使用Angular 2和@ ngrx / store的项目。我还使用@ ngrx / devtools来调试并帮助我使用这个redux实现。
我想将angular的路由器绑定到ngrx的商店。所以我将能够通过调度动作来更新当前路线。
这就是我所做的(它有效,但这不是我想要的 ):
// imports
// ....
// @Component
// ....
@RouteConfig([
{ path: '/home', name: 'Home', component: HomeComponent, useAsDefault: true },
{ path: '/medias', name: 'Medias', component: MediasComponent }
])
export class MainComponent {
constructor (private _router:Router, private _store:Store<AppStore>) {
_router.subscribe(url => _store.dispatch(changeUrl(url)));
}
}
changeUrl 是一个动作创建者。
因此,当Angular检测到路由更新时,将调度操作并且我的状态正在更新。
效果很好!使用@ ngrx / devtools,我可以看到正确调度的操作,商店已更新但是..这与我想要的相反,因为 angular 完成工作并更新 redux 。因此,如果我回滚某个操作,我的视图不更新。
“我所要做的就是在点击动作创建者内部的导航链接时发送动作,使用Angular的方法重定向。”
是的。但不,我认为这不是一个好的方法因为:
<a [routerLink]="routeName">Link</a>
变得毫无用处。Router
,因为动作创建者基本上是函数。不是角度的组件。这是个问题。我真的不知道如何绑定Angular的路由器&amp; @ ngrx /存储正确。