问题标签 [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 投票
1 回答
986 浏览

ngrx - 如何在ngrx效果中使用ngrx store?我需要来自商店的数据来进行 api 调用

我需要使用我的商店内部效果,但我收到错误。这样做的正确方法是什么?

在此处输入图像描述

在此处输入图像描述

0 投票
2 回答
113 浏览

javascript - 如何使用 push 将对象添加到数组中?

我正在尝试将多个选定项目作为数组推送,但出现错误“无法读取未定义的属性‘推送’”



0 投票
1 回答
135 浏览

angular - 为什么在订阅块中没有调用 store.dispatch() ?

所以我有一个 MatDialog 框,它在关闭时会发送一些表单值。然后我在 MatDialogRef 提供的 afterClosed 方法中分派一个动作。

当我手动测试它时,这工作得很好。但是在单元测试时,调度没有被调用,我的测试失败了。

我的代码在打开对话框时运行并在关闭时调度操作。

MatDialog 的模拟

测试床配置

以及应该通过的测试

0 投票
3 回答
12557 浏览

node.js - 如何在从商店中选择之前等待发货完成。Ngrx 相关问题

在我从商店中选择之前,如何等待发货完成。谷歌搜索没有运气?在这种情况下,如何在从商店中选择之前等待调度完成?

我的代码,感谢支持的帮助。

目前在第一次加载期间,调度操作尚未完成,当我从商店中选择项目时。它目前是空的。

0 投票
4 回答
815 浏览

angular - 如何从 Observable 中检索值以用于服务 API 调用

我有一个使用 ngrx-store 的 Angular 应用程序。我的功能组件有以下文件

我是 Observables 和 NGRX 存储的新手,我需要一些帮助来从存储中检索一个值(emailAddress),然后在服务 API 调用中使用。在服务方法中,我可以订阅和控制台记录该值,但是当进行服务调用时,该值是空白的,所以我没有取回数据。

如何订阅 emailAddress 选择器并同时调用服务 API 以确保该值存在。商店中的电子邮件地址仅在用户登录时存储一次,该值永远不会改变。

我的组件

我的组件选择器

我的 API 服务中的方法

我的效果如下

从存储中检索值的电子邮件地址选择器是

我的控制台日志如下

控制台日志输出

按照建议将代码从服务移动到组件后,我现在在 this.emailAddress$ 上收到一个错误,指出“无法为‘新’表达式类型不匹配选择重载参数 emailAddress 应该具有可分配给字符串的类型,但它具有可观察的类型

更新的组件代码

更新代码

我的组件

我的效果

我的服务

行动

需要指出的其他内容 EmailAddress 不是 IStraviaState 的一部分

我现在看到的更新代码的错误

组件错误

效果误差

0 投票
1 回答
1237 浏览

angular - NGRX 角载荷或无载荷

在 NGRX 库 ( https://ngrx.io/ ) 中,当创建一个包含数据的操作时,这些示例显示了一个payload为包含此数据而提供的参数。有没有理由我不能只提供有效负载作为参数?我可以找到的文档和所有示例都使用 apayload但没有真正解释原因。例如:

可以写成:

这消除了获取 action.payload 的需要,以及对辅助函数 ( map(toPayload)) 的需要,并且类似于我看到的其他 redux 实现框架 (NGXS)。有什么理由我不应该像后者那样做吗?

这也会使效果器和减速器变得更简单。

0 投票
1 回答
572 浏览

angular - 重新加载 Angular 页面后注销操作不起作用

问题:

当我点击signOut按钮登录到应用程序后,它成功signOut并重定向到登录页面。但是当我刷新页面然后尝试退出时,它什么也不做。任何人都知道可能是什么问题?

代码:

Chrome Redux DevTools 的屏幕截图

刷新页面前:http: //prntscr.com/ne3pc0

刷新页面后:http: //prntscr.com/ne3qpr(Logout Action 后什么都没有)

0 投票
1 回答
838 浏览

angular - 如何使用带有 ngrx 8.0.0 beta 的 StoreModule.forFeature 注册单个减速器

在我的功能模块中,我使用 createReducer 方法创建我的减速器,如下所示:

但是当我在模块类中注册上述减速器时,如下所示:

编译项目时出现以下错误:

错误 myModule.module.ts(38,47):在模板编译“MyModuleModule”时出错 装饰器不支持函数调用,但在“reducer”中调用了“createReducer”,“reducer”在 myreducer.reducer.ts 调用“createReducer” (14,24)。

有谁知道可能出了什么问题?或者我如何注册单个reducer,因为我看到的所有示例都使用combineReducers 和多个reducer,我想知道是否只有一个reducer,我们该怎么做?

非常感谢!

0 投票
1 回答
356 浏览

angular - 订阅未完成后 NgRx 存储选择

我正在尝试从ngrx store 获取数据,但是一旦订阅完成,它就必须完成,而这并没有发生

0 投票
0 回答
57 浏览

angular - 用于调度操作和检查后端调用是否成功的 Ngrx 模式

调度调用端点以在后端执行更新的操作的正确方法是什么?

当前的建议是为每个操作设置一个操作和一个 action_success 和 action_fail。例如,如果我们要编辑课程,我们将调度一个名为 course_update 的动作,在此动作的效果中调用一个端点,如果后端的结果成功,我们调度 course_update_success,否则调度 course_update_fail。

这导致每次调用 3 次操作。有一个更好的方法吗?