问题标签 [ngrx-router-store]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
74 浏览

angular - 添加路由器存储配置 RouterState.Full 会引发神秘的错误消息

我刚开始实现router-storengrx库。我按照他们的指示在那里实现了完整的路由器。

最后RouterState.Full配置抛出错误

错误:未捕获(承诺):TypeError:无法添加属性NG_ELEMENT_ID,对象不可扩展

另一方面,当我使用RouterState.Minimal配置时,它按预期工作。

ngrx 配置链接:https ://ngrx.io/guide/router-store/configuration

我怎么解决这个问题?

0 投票
1 回答
1294 浏览

angular - 如何正确使用 NGRX 路由器?

老实说,我完全被文档迷失了,除了我想知道以下几点:

如果我使用NGRX Router,我需要使用 angular 的 nativeapp-rounting吗?如果是这样,我如何将NGRX Router与集成<router-outlet>

你能给我一个同样的简单例子吗?

0 投票
0 回答
36 浏览

angular - 使用导航无限渲染组件

我在其他路线上完美导航,但在这条路线上它包含其他路线,如儿童,当我点击"/source/:operatorid"路线内的编辑按钮时,我注意到两件事:

  1. "/sources"路由的组件再次渲染。
  2. 导航和锁定 chrome 中有一个无限循环,下一条路线将是"/sources/:operatorId/edit/:sourceId".

现在为什么会发生,我不知道,你能帮我吗?

按照我的代码...

路线:

源组件:

0 投票
0 回答
93 浏览

angular - ngrx 路由器存储选择器生效

假设我的应用中有一个列表和一个分页。我有这个状态:

另外,我必须有一个pageIndex(当前页号),并且我从 Url 获得它。为此,我有一个选择器:

我的路线有{:pageIndex}参数。到目前为止,一切都很好。

现在,我有一个处理加载当前页面数据的效果,它使用状态(包括pageIndex使用提到的选择器)获取所有必需的参数withLatestFrom(),然后从服务器请求数据。如此简单的场景,例如更改页面工作。

现在,想象有一个过滤器字段,用户可以在其中输入一些内容searchPhrase,然后我需要刷新页面,但我需要将当前页码 ( pageIndex) 设置为 1。这pageIndex来自路由器存储。所以,这就是我在效果中所做的:

这就是问题所在。即使我navigate对新页面进行了处理,效果仍然会从路由器存储选择器中loadPageOfData()看到旧页面。pageIndex

例如,路由/items/30- 获取第 30 页数据。现在,用户输入搜索短语 - 状态发生变化,我需要重置pageIndex为 1(因为现在这是完全不同的数据集)。我的逻辑不起作用,pageIndex在加载数据效果中保持不变。

我该如何解决这个问题或者我在这里做错了什么?

0 投票
1 回答
227 浏览

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

我正在使用自定义序列化程序@ngrx/router-store

我已经完成了基本设置,并且商店正在按预期使用序列化程序类型跟踪我的路线。

我希望能够在从内置操作触发的效果中访​​问自定义类型,就像这样

payloadrouterNavigatedActionis 类型提供RouterNavigatedPayload<SerializedRouterStateSnapshot>SerializedRouterStateSnapshot只知道root并且url什么都不知道showFilter,即使它在运行时就在那里

调试断点

(在 tap() 之前调试断点):

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

0 投票
1 回答
179 浏览

angular - NGRX 路由器成对单元测试

有人知道如何为以下函数编写单元测试吗?我花了很多时间试图找到解决方案,但没有任何结果。selectCurrentRoute是一个ngrx路由器选择器。

先感谢您!

0 投票
1 回答
19 浏览

angular - 在 RouteSerializer 中返回 Oberservable/Access 存储值?

有什么方法可以让RouteSerializerinngrx-router-store返回 aPromise或 anObservable吗?

我真正想要实现的是查找存储在商店中的一些链接元数据。但是,他们访问存储值的唯一方法是通过this._store.selectwhich 返回一个Observable. 我在文档中看不到任何允许此返回类型的内容,因此在我开始使用这种方法并尝试不同的方法之前,请在此处发布。ngrxObservables在任何情况下都拒绝与之合作,这似乎很奇怪......

0 投票
2 回答
127 浏览

angular - ngrx 路由器无法读取未定义的属性“firstChild”

我正在尝试使用ngrx的路由器商店

/模块

/店铺

但是当我订阅任何selectRouter选择器时,例如selectQueryParam,我得到错误

因为我的routerState对象没有root属性...

没有根属性的 routerState 对象的屏幕截图

我在谷歌上能找到的最接近的是https://github.com/ngrx/platform/issues/2153

知道如何解决这个问题并使用我的路线选择器吗?

0 投票
0 回答
45 浏览

angular - ngrtx 路由器存储选择器看不到路由器状态

我有一个安装了 ngrx/router-store 的 ngrx/store 应用程序。在应用程序中,我具有三个功能 - 两个是“渴望”(authrouter),一个是懒惰(admin)。admin包含一个名为 的切片状态user

尽管急切,路由器选择器似乎不起作用。console.warn 消息,(否则非常清晰和有指导意义!)并不能真正解决问题,因为该功能在以下内容中明确声明/定义app.module.ts

app.module.ts

路由器选择器.ts

然后在我的一个延迟加载模块中,我getRouterStateParams与实体结合:

用户选择器.ts

这就是错误发生的地方。

在此处输入图像描述

我是在做一些根本错误的事情,还是某种竞争条件?

更新

到目前为止我尝试了什么:

  • StoreModule.forFeature()分别为每个急切的减速器设置,和StoreModule.forRoot({})
  • 设置initialNavigation: 'enabled'- 这只会导致路由切片立即出现(通常,reducer 仅在第一个导航事件之后才启动),但它不会纠正undefined来自选择器的 s
  • 不使用CustomSerializer,而是基于默认的序列化程序和工厂交付getSelectors()- 我感兴趣的所有选择器,用于 url、params 和 queryParams -undefined也返回
  • 不同的设置navigationActionTiming
  • 这个类似的问题中提到的每个可能的技巧,包括显式initialState对象