我正在使用 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>
Angular 提供的功能变得毫无用处。- 似乎很难使用 Angular 的 DI 来注入
Router
我的动作创建者,因为动作创建者基本上是函数。不是角度的组件。
该怎么办 ?
这就是问题。我真的不知道如何正确绑定 Angular 的路由器和 @ngrx/store。