Angular 2,@ ngrx / store,@ ngrx / devtools:通过订阅路由器绑定操作?

时间:2016-04-12 10:48:31

标签: javascript angular redux ngrx

我正在使用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的方法重定向。”

是的。但不,我认为这不是一个好的方法因为:

    Angular提供的
  • <a [routerLink]="routeName">Link</a>变得毫无用处。
  • 似乎很难使用Angular的DI在我的动作创建者中注入Router,因为动作创建者基本上是函数。不是角度的组件。

怎么办?

这是个问题。我真的不知道如何绑定Angular的路由器&amp; @ ngrx /存储正确。

0 个答案:

没有答案