首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在处理ngrx路由器默认操作时访问自定义序列化程序

如何在处理ngrx路由器默认操作时访问自定义序列化程序
EN

Stack Overflow用户
提问于 2020-11-07 10:21:48
回答 1查看 168关注 0票数 0

我在@ngrx/router-store中使用了一个定制的序列化程序

代码语言:javascript
代码运行次数:0
运行
复制
export interface CustomSerializer {
  url: string;
  params: Params;
  queryParams: Params;
  data: Data;
  showFilter: boolean;
}

我已经完成了基本设置,商店正在使用串行器类型跟踪我的路由,这与预期不谋而合。

我希望能够访问由内置操作触发的自定义类型,如下所示

代码语言:javascript
代码运行次数:0
运行
复制
test$ = createEffect(() =>
  this.actions$.pipe(
    ofType(routerNavigatedAction),
    tap(({ payload }) => {
      console.log('filter?:' + payload.routerState.showFilter); <-- not allowed by typescript
    })
  ), { dispatch: false }
);

但是routerNavigatedAction提供的payloadRouterNavigatedPayload<SerializedRouterStateSnapshot>类型的。SerializedRouterStateSnapshot只知道rooturl,对showFilter一无所知,即使它在运行时就在那里

(在点击前调试断点()):

有没有办法让我绑定到核心路由事件,并配置基础设施来返回我的自定义序列化程序类型?如果没有,有没有一个“好”的方法来获得我的效果中的showFilter属性?我知道我可以使用选择器从存储中获取强类型的数据,但我更喜欢使用effect已经提供的有效负载。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-07 16:57:00

我想这就是你要找的

代码语言:javascript
代码运行次数:0
运行
复制
test$ = createEffect(() =>
  this.actions$.pipe(
    ofType<RouterNavigatedAction<CustomSerializer>>(routerNavigatedAction),
    tap(({ payload }) => {
      console.log('filter?:' + payload.routerState.showFilter);
    })
  ), { dispatch: false }
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64723830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档