问题标签 [ngrx-store-4.0]

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 投票
2 回答
19908 浏览

angular - @ngrx/store 组合功能模块中的多个减速器

我目前正在开发一个简单的测试应用程序,以了解有关@ngrx/store 的更多信息。我有一个名为 TrainingModule 的模块,它应该存储一些练习和更多信息。该代码有效,但我尝试在这里改进。我目前拥有的是我的功能模块,如下所示:

和我的减速器看起来像这样:

到目前为止,一切都很好。在我的模板中,我从商店中选择我的练习

所以我现在想做的是结合我的减速器,这样我就不必像这样添加每个减速器

在我的所有模块中。我试图收集所有减速器

但这给了我一个无法读取控制台中未定义错误消息的属性“练习”。也许有人可以帮助我理解,我如何从功能模块中收集所有减速器并为此创建正确的选择器。

0 投票
3 回答
15233 浏览

angular - 错误:商店没有提供者!在@ngrx 4.x

在将我的项目从 @ngrx 2.x 迁移到 4.1.0 时,我遇到了错误消息

NullInjectorError:商店没有提供者!

商店已导入,如文档中所示:

0 投票
0 回答
670 浏览

node.js - 类'可观察'定义实例成员属性'select',但扩展类'Store' 将其定义为实例成员函数

嗨,我刚刚安装了 angular 4/5。我试图使用 ngrx 商店。当我 npm start 时,出现以下错误。最后,当我在 Angular 2 上工作时,我没有遇到这个问题。我经历了许多 github 讨论,但无法找到解决方案。

ERROR in [at-loader] ./node_modules/@ngrx/store/src/store.d.ts:13:5 TS2425: Class 'Observable<T>' defines instance member property 'select', but extended class 'Store<T>' defines it as instance member function.

以下是我的 package.json:

有什么想法吗?我还需要提供什么吗?提前致谢。

0 投票
0 回答
540 浏览

firebase - NGRX 4:如何组合来自多个来源的数据

关于如何在应用状态下组合reducers / data的问题:

数据示例(Firebase):

应用状态:

减速器:

效果:

Firebase 提供者:

艺术家页面:

我的问题是你应该如何在 NGRX4 中组合不同的数据切片?

示例:我有一个艺术家详细信息页面。在该页面中,我想显示艺术家信息以及艺术家的流派。在其他地方,我可能有一个艺术家列表页面,其中显示了多个艺术家及其流派。我在哪里获取和合并我的应用程序中的所有相关信息?在减速机?在效果上(FetchArtistGenres$ 目前是如何做到的)?

其他问题:我不认为我希望在我的应用程序状态中拥有整个“genresPerArtist”或“artists”节点,因为它最终会变得非常大而且我不确定它是否会表现出色(如果我错了在这里,这就是要走的路,让我知道)。相反,我会在需要时获取特定的 Artists 流派节点(/genresPerArtist/${artistId}

0 投票
2 回答
5232 浏览

typescript - Angular 路由器保护和 ROUTER_NAVIGATION 效果顺序

有一个简单的(Angular 4)路由守卫,它等待从后端加载一些数据:

路由:

最后有一个由@ngrx/router-store v4ROUTER_NAVIGATION动作触发的@ngrx/effects:

不幸的是,当导航更改为/app-listngrx 效果时首先执行(在警卫之前),因此数据state.contracts尚不可用。守卫还没有被处决。 我还必须添加.combineLatest()Rx 运算符来等待contracts数据生效(这是警卫的工作):

我不确定这是否足够好的解决方案。必须有更好的方法来做到这一点 - 不要复制有效的保护功能。

总结一下:在应用程序 boostrap 上,我需要从后端获取一些数据 - contracts。如果用户导航到/app-list(立即重定向),则从服务器获取其他数据 - 基于一些查询参数和contracts- ngrx 路由器ROUTER_NAVIGATION effect执行顺序在警卫执行顺序之前。如何正确处理?

基于GitHub - state_management_ngrx4

0 投票
1 回答
1631 浏览

angular - 状态与 ActionReducer作为 NgRx 减速器返回类型

我正在查看NgRx 提供的示例应用程序的代码。我注意到示例应用程序中的每个reducer 函数都有一个返回值,该值由该State特定reducer 的接口键入。例如,books reducer 的代码如下:

后来,我在阅读 Oren Farhi 的一本关于 NgRx 的书,名为Reactive Programming with Angular 和 NgRx,偶然发现了一段代码片段,显示了 reducer 函数的通用主体结构(第 24-25 页)。通用结构的代码将 reducer 函数的返回值显示为由ActionReducerwithState作为类型参数输入(在这种情况下调用SomeInterface而不是调用):State

为什么一个代码示例使用 State 而另一个使用 ActionReducer 和 State 作为 reducer 函数返回值的类型参数?为什么要选择这些函数签名中的一个而不是另一个?每个服务的目的是什么?

这本书是为 NgRx 2.2.1 编写的,而示例应用程序是为最新版本的 NgRx(版本 4.1.1)编写的。我猜想返回类型的差异不能简单地用 NgRx 版本的差异来解释,因为最新版本的 NgRx 也有 ActionReducer。

谢谢!

0 投票
3 回答
12544 浏览

angular - “存储”类型上不存在属性“获取”'ngrx/商店

在我的功能中选择状态时,我尝试使用属性“take”,但出现错误Property 'take' does not exist on type 'Store<State>。拜托,有人知道发生了什么吗?我想这样做的原因是因为我必须确定用户何时单击“添加空间”按钮,该按钮将我的模板更改为表单。由于这种模式也改变了父母的模板,我用@ngrx/store 管理它。

我的代码:

0 投票
1 回答
2971 浏览

angular - ngrx/store init store 无法正常工作

我的商店包含以下减速器:

问题是Angular初始化了所有reducers,layoutState在触发第一个动作后只有一个''被初始化(这会导致访问undefined Object)。

我对所有减速器和状态都遵循相同的实现,但我没有弄清楚这种奇怪行为的原因。

下面是Store初始化后第一次action后的状态 在此处输入图像描述

在此处输入图像描述

对于所有减速器,我的实现都是相同的。

0 投票
1 回答
1146 浏览

angular - ngRx 4 中的选择器返回存储对象而不是存储中的值

当我尝试检索数据时,我的选择器返回的是 store 对象而不是 store 中的值。

这是我的减速器注射。

这是我的减速器和状态。

这是我的选择器。

我得到的输出是

这是我的控制台

这就是我访问我的选择器的方式。

提前致谢。

0 投票
2 回答
1337 浏览

angular - 在 ngrx 4 中使用服务器支持撤消/重做

目标:

在 Angular 4 项目中使用服务器端支持实现撤消/重做功能。例如,从服务器中删除项目必须可以通过相应的(创建)操作撤消。

有一个组件:https ://github.com/PowToon/redux-undo-redo

我正在尝试使用 ngrx-store 4 移植该组件。

问题:

我正在尝试将中间件转换为元减速器,但这似乎不是一件容易的事。我怎样才能调用dispatchngrx meta-reducer?如果我不能,我怎么能实现相应的功能?

中间件: https ://github.com/PowToon/redux-undo-redo/blob/master/src/createUndoMiddleware.js

或者,如果有任何更简单的方法可以达到我的目标,那会是什么?