问题标签 [ngrx-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.
testing - 在角度 2 中模拟 @ngrx/store
我在我的应用程序中使用商店,如下所示,它工作正常。
现在,我正在尝试创建一个单元测试并想模拟这个商店。这就是我正在做的事情:
1. 创建模拟存储 创建一个模拟存储,当 this.store.select('') 被调用时,它将返回模拟数据。模拟数据返回一个名为 navigationLinks 的数组类型的属性。
2.BeforeEach 块
3. 我的测试 我知道这个测试会按照期望语句失败,但我无法用我的模拟数据填充 navigationLinks$ 属性。
console.log 打印 undefined 并且无法读取 MockStore select() 返回的数据。我需要做些额外的事情吗?
angular - ngrx Reducer to change multiple states
I can't find the way to create a reducer that changes multiple state, the API Rest returns nested data, which I normalize using normalizr library. Here is my code.
Api returns data:
Schema normalizr:
Which should be the reducer that receives the data of the api rest and generates the previous state tree.
angular - 组件视图 ngClass 未更新
我目前正在将 @ngrx 状态管理包合并到一个已经存在的 Angular2 应用程序中。到目前为止,一切都顺利进行,但我遇到了一个问题,即当返回到前一个组件并通过应用商店维护状态时,[ngClass] 指令无法正常工作。
我试图实现的功能是当用户单击一个类别时,该链接使用组件类上的一个名为“selectedCategory”的属性获得一个 css 类“活动”,该属性在@ngrx 商店中更新。当用户单击单个产品时,它会将它们带到单独的产品组件中。然后,当用户返回到原始组件时,链接应该再次被赋予类“活动”,因为“selectedCategory”存储在@ngrx 存储中。但这不起作用,似乎我的 [ngClass] 指令没有按应有的方式工作。
这是我的代码(请注意,这一切都在我们说话时被重构,所以忽略任何你可能认为看起来很奇怪的东西)。
类别树组件
它的观点:
和 selectedCategory @ngrx 减速器:
正如您在我的组件代码中看到的那样, selectedCategory 组件正在被存储并在订阅中正确返回。当这个 Observable 返回并解决时,我的视图模板 ngClass 似乎没有运行。任何人都可以在这里看到问题吗?
谢谢
angular - Ngrx 一次多次分派一个动作
我的应用有 3 个下载按钮 每个按钮单击都会调度DownloadFileAction(payload=fileId) 一个 Effect 将继续监听 Download_File_Action 类型
})
如果同时点击了 1 个以上的按钮,则会分派 2 个 DownloadFileAction 动作
但是,download_attachment$ effect 只监听一个先下载的,然后返回 DownloadAttachmentSuccessAction,所以其他的下载文件不会完成
有什么解决方案或解决方法吗?非常感谢您的想法
angular - 如何正确推送和接收来自ngrx存储的数据
我正在尝试使用 ngrx 商店并遇到问题,以便在我的商店中正确推送数据并选择它。
我的商店对象看起来像
我的减速机看起来像
如果“ADD_MESSSAGE”我想从动作有效负载推送新消息对象并返回新状态。我究竟做错了什么?现在我的状态的聊天消息数组每次推送新消息时只重写一个值,但旧消息不会保存。
写入存储后,如何选择我状态的消息?是否需要订阅数据?我试过this.store.select('chat')
但如何获取消息?
angular - 在路由解析器中调度 ngrx 存储操作
我目前有一个容器(有状态)组件,它根据方法中的路由参数(id)调度一个select
和一个动作。这些操作的重点是在我的商店中拥有数据和选定的 id。get
ngOnInit
我很好奇在解析器中调度这些动作是否正确?
感谢您的回复。
我的组件:
我的路线:
解析器将是:
以及修改后的路线:
这就是为什么我不确定这是正确的,因为商店将永远是null
。
angular - ngrx/store:调度方法是否通过所有减速器传递动作?
我刚从 Angular-2-Project 中的 ngrx/store 开始。我的问题涉及通过 store 的 dispatch-method 分配动作:动作会通过所有 reducer 传递吗?这是否意味着动作类型必须是全球唯一的?这个对吗?
我问这个问题是因为在某些教程中,动作的类型是很短的字符串,就好像它们在某种程度上受到了局部限制。但是如果它们是全局的,应该有某种前缀命名空间,对吧?
谢谢!
angular - 是否有一种类型安全的方式来访问 ngrx/store 中的商店成员?
我一直在使用 angular2 浏览 ngrx/store 的文档
https://github.com/ngrx/example-app
上面的示例应用程序暗示我应该使用以下方式访问商店的可观察成员:
使用字符串'counter'
访问对象成员感觉与 TypeScript 是对立的。是否有一种类型安全的方式来访问商店成员?
javascript - 如何使用 ngrx/store 以角度更改输入字段的值
我的 ngrx/store 中有一个backgroundHex
用于颜色对象的键/值。所以要在我的应用程序中访问它,我会执行以下操作{{(colors | async).backgroundHex)}}
上面的方法效果很好,但是当涉及到输入字段时,我一直很难及时找到正确的语法,我想知道是否有人可以提供帮助。我已经尝试过 value、ngModel 和 ngModelChanged(可能方式不对)。
任何帮助都会非常有帮助。谢谢你。
angular - 为什么 ngrx / redux 效果必须返回动作?使用像 elm 这样的 noop 操作是否被认为是不好的做法?
我正在使用带有 Angular、ngrx/store 和 ngrx/effects 的 redux 风格的状态管理设计。每当我不从效果返回动作时,我都会收到错误消息:
我研究了这个问题,发现在 elm 架构中有一种叫做“noop”的动作,当你不想用你的效果链接另一个动作时,它什么都不做,你可以调用它。在我看来,到处都调用这个 noop 动作似乎非常重复。我想知道这是否是一个不好的做法。您是否有理由不能产生不返回动作的效果?效果的意图是否总是让一个动作触发另一个动作?我想知道我是否误解了如何使用效果。
谢谢!