问题标签 [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.
javascript - 如何使用 push 将对象添加到数组中?
我正在尝试将多个选定项目作为数组推送,但出现错误“无法读取未定义的属性‘推送’”
angular - 为什么在订阅块中没有调用 store.dispatch() ?
所以我有一个 MatDialog 框,它在关闭时会发送一些表单值。然后我在 MatDialogRef 提供的 afterClosed 方法中分派一个动作。
当我手动测试它时,这工作得很好。但是在单元测试时,调度没有被调用,我的测试失败了。
我的代码在打开对话框时运行并在关闭时调度操作。
MatDialog 的模拟
测试床配置
以及应该通过的测试
node.js - 如何在从商店中选择之前等待发货完成。Ngrx 相关问题
在我从商店中选择之前,如何等待发货完成。谷歌搜索没有运气?在这种情况下,如何在从商店中选择之前等待调度完成?
我的代码,感谢支持的帮助。
目前在第一次加载期间,调度操作尚未完成,当我从商店中选择项目时。它目前是空的。
angular - 如何从 Observable 中检索值以用于服务 API 调用
我有一个使用 ngrx-store 的 Angular 应用程序。我的功能组件有以下文件
我是 Observables 和 NGRX 存储的新手,我需要一些帮助来从存储中检索一个值(emailAddress),然后在服务 API 调用中使用。在服务方法中,我可以订阅和控制台记录该值,但是当进行服务调用时,该值是空白的,所以我没有取回数据。
如何订阅 emailAddress 选择器并同时调用服务 API 以确保该值存在。商店中的电子邮件地址仅在用户登录时存储一次,该值永远不会改变。
我的组件
我的组件选择器
我的 API 服务中的方法
我的效果如下
从存储中检索值的电子邮件地址选择器是
我的控制台日志如下
按照建议将代码从服务移动到组件后,我现在在 this.emailAddress$ 上收到一个错误,指出“无法为‘新’表达式类型不匹配选择重载参数 emailAddress 应该具有可分配给字符串的类型,但它具有可观察的类型
更新的组件代码
更新代码
我的组件
我的效果
我的服务
行动
需要指出的其他内容 EmailAddress 不是 IStraviaState 的一部分
我现在看到的更新代码的错误
angular - NGRX 角载荷或无载荷
在 NGRX 库 ( https://ngrx.io/ ) 中,当创建一个包含数据的操作时,这些示例显示了一个payload
为包含此数据而提供的参数。有没有理由我不能只提供有效负载作为参数?我可以找到的文档和所有示例都使用 apayload
但没有真正解释原因。例如:
可以写成:
这消除了获取 action.payload 的需要,以及对辅助函数 ( map(toPayload)
) 的需要,并且类似于我看到的其他 redux 实现框架 (NGXS)。有什么理由我不应该像后者那样做吗?
这也会使效果器和减速器变得更简单。
angular - 重新加载 Angular 页面后注销操作不起作用
问题:
当我点击signOut
按钮登录到应用程序后,它成功signOut
并重定向到登录页面。但是当我刷新页面然后尝试退出时,它什么也不做。任何人都知道可能是什么问题?
代码:
Chrome Redux DevTools 的屏幕截图
刷新页面前:http: //prntscr.com/ne3pc0
刷新页面后:http: //prntscr.com/ne3qpr(Logout Action 后什么都没有)
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,我们该怎么做?
非常感谢!
angular - 订阅未完成后 NgRx 存储选择
我正在尝试从ngrx store 获取数据,但是一旦订阅完成,它就必须完成,而这并没有发生
angular - 用于调度操作和检查后端调用是否成功的 Ngrx 模式
调度调用端点以在后端执行更新的操作的正确方法是什么?
当前的建议是为每个操作设置一个操作和一个 action_success 和 action_fail。例如,如果我们要编辑课程,我们将调度一个名为 course_update 的动作,在此动作的效果中调用一个端点,如果后端的结果成功,我们调度 course_update_success,否则调度 course_update_fail。
这导致每次调用 3 次操作。有一个更好的方法吗?