将 @ngrx/router-store 操作与 ngrx 8 createReducer() 和 on() 函数一起使用

Using @ngrx/router-store actions with ngrx 8 createReducer() and on() function

我有一个 ngrx v8 风格的减速器(使用 createReducer + on)需要对路由变化做出反应。

let myAcction = createAction('my action', prop<boolean>);

let reducer = createReducer(
  initialState,
  on(myAction, (state, prop) => ({...state, example=prop })),
  on(ROUTER_NAVIGATION, (state, routeParams) => ({...state, example2:{...routeParams}}))
)

编译失败,因为 ROUTER_NAVIGATION 不是动作创建者:

Argument of type '"@ngrx/router-store/navigation"' is not assignable to parameter of type 'ActionCreator>'. Type '"@ngrx/router-store/navigation"' is not assignable to type 'FunctionWithParametersType'

它也不适用于 RouterNavigationAction

Argument of type 'boolean' is not assignable to parameter of type 'ActionCreator>'

如何在 createReducer/on 函数中使用 ngrx/router-store 操作?我找不到为给定动作导出的动作创建者。

我会在他们的存储库中针对 ngrx 提出问题。同时,您可以通过在对象中使用令牌来破解它:{ type: ROUTER_NAVIGATION } 因为这就是它在幕后的工作方式。这并不理想,但在他们修复之前它一直有效。