从ngrx / router-store中获取navigationTrigger

时间:2019-11-13 15:25:27

标签: angular ngrx angular8 ngrx-store ngrx-router-store

我正在使用ngrx / router-store8。此版本公开了“ @ ngrx / router-store / request”操作,该操作的有效负载中包含一个NavigationTrigger:

  type: '@ngrx/router-store/request',
  payload: {
    routerState: {
      url: '/directory',
      queryParams: {},
      params: {},
      navigationTrigger: true
    },
    event: {
      id: 2,
      url: '/jobs',
      navigationTrigger: 'imperative',
      restoredState: null
    }
  }
}

navigationTrigger可以获取以下两个值之一:

  1. 命令式-直接访问页面(通过单击链接)
  2. popstate-使用浏览器的后退/前进按钮

我需要随时知道如何访问当前页面,因此需要访问此变量。问题是路由器存储的内置化简器没有将此变量保持在状态,而仅在该操作的有效负载处显示。我意识到我需要重写默认的reducer,但是我不知道该怎么做,也找不到任何信息。也许还有另一个想法如何存储这些数据?

1 个答案:

答案 0 :(得分:0)

您可以在ROUTER_REQUEST内收听@Effect。在您的有效负载中,您可能会获得信息。

  getMyNeed$ = createEffect(() => this.actions$.pipe(
    ofType(ROUTER_REQUEST),
    tap(console.log),
    map(({payload}) => SomeAction(payload))
  ));