问题标签 [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.
angular - 如何捕获两个(或更多)@ngrx/store 操作并在组件中保持订阅,直到发生这种情况?
在我的主要组件中,我开始初始化我的数据:
这会触发所有初始化操作:
在商店中加载数据后,所有商店实体都会触发成功操作。
对于车辆:
对于字符:
最后,在触发所有 *_DATA_SUCCESS 操作之后,我希望触发我的 INITIALIZED 操作以将 READY 标志放入我的存储中。
我的问题 - 如何执行?如何知道何时触发了所有成功操作?
UPD
Snks mtx,我跟着你的第一个和更快的广告。
很抱歉有额外的问题,但我真的一直在寻找下一步的好方法。如何保持这个订阅(在组件内部)直到我的 INITIALIZED 动作被触发(需要用 if(vehicles.length>0) 移除这个可怕的拐杖):
我试图在subscribe() 之前插入 skipUntil( ),但现在我从另一个组件打开这个组件时遇到问题(当所有数据都已经加载时)。在这种情况下,订阅回调不能再触发了!我无法理解为什么...
要重现我的问题,只需按下列表中的一辆车。订阅回调未触发。然后按 F5 -> now vehicle loading,因为回调按设计触发。
完整的源代码在这里:GitHub ,在 GitHub Pages上运行的最后一个版本
typescript - 无法将 Object Spread 与 TypeScript 和 @ngrx 一起使用
我正在尝试使用 @ngrx 在我的减速器上使用 Object Spread,并使用 TypeScript 使用 Angular,但是,我在控制台中不断收到此错误:
ReferenceError: __assign 未定义
这是我的代码:
但是如果我按照下面的代码执行,我可以很好地运行代码:
我在另一个问题中读到这可能与打字稿版本有关,但我正在使用"typescript": "~2.2.1"
.
我错过了什么吗?
编辑:
根据评论中的要求添加 tsconfig.js。
angular - 使用 observable 获取许多项目的数据并将其作为单个地图返回(角度 2)
我有一个 ID 数组,对于每个 ID,我想检查它的数据是否存储在本地缓存中(如果是,则获取)或不存储(从服务器获取)。在该过程结束时,我想获得一张地图,女巫拥有所有 ID 及其解析的数据。
到目前为止,我尝试的每件事都没有满足我的要求.. 我设法做的最接近的事情是:
在上面的代码中,订阅者得到一个映射,键是组 ID,值是组数据(如果它存储在缓存中)或未解析的 observable(如果它试图从服务器获取它)。我想得到同样的想法,只是所有的值都将被解析(缓存和新获取的)。值得一提的是,当我在缓存中拥有所有数据时,我得到的地图正是我想要的,所以问题在于获取和解析部分。
我怎样才能正确地做到这一点?此外,我们很乐意接受对此代码的任何改进。
angular - @Ngrx/Store 与构建器模式
我有一个小小的疑问....我的疑问是它是好还是超级酷还是不好?要使用构建器模式从 api 获取响应并在该响应上使用构建器模式并将其存储到 @ngrx/store ?然后当我从我的组件中的商店访问它时,我可以访问构建器对象的 api 响应上实现的功能吗?
我想要一些关于这个的反馈......或者我只是对此感到愤怒......或者它是使用@ngrx/store 实现构建器模式的好方法?
有人可以帮我弄这个吗?
angular - Angular、ngrx/store、store select 和 async call 在一个单一的序列中
有谁知道是否有机会从商店获取价值然后调用 Angular http 服务?请参见下面的示例。提前致谢。
我有一个异步方法的服务。在这种方法中,我调用了 angular http 服务,但在调用 angular http 服务之前,我想从存储中检索一些值(oauth 访问令牌)。问题是我将 oauth 令牌存储在商店中,并且必须将令牌添加到请求中。如果服务器响应 401 错误,我会刷新令牌并使用新令牌重复请求或请求。
然后当我调用一些服务时,它会通过拦截器发送请求。
我尝试在拦截器中使用 switchMap,但如果拦截器被多次调用,它将不起作用。
angular - 调度多个动作并等待完成发送下一个
我从一个效果返回多个动作, concatMap 按顺序发送动作,但不要等待完成发送下一个动作。loadDetails 在收到 loadDetailsSuccess 时调用 REST 服务并更新存储
我想在调用 HttpResultActions.httpRequestUpdateSuccessful() 之前完成 loadDetailsAction。
怎样才能做到这一点?来自不同的动作?
angular - 商店与商店
我几乎是该redux
模式的新手,并且刚刚开始使用ngrx
. 它太棒了,我想尽可能多地使用它,但我有几个关于这个Store
概念的问题。
我将尝试通过一些示例来描述问题,并在本文末尾提出我的问题。
让我们从AppState
接口和减速器开始:
rootReducer
是这样添加的:
主要AppComponent
是我如何访问store
:
现在,一切正常,我真的很喜欢这个概念,但我注意到,如果我从AppState
界面中删除其中一个属性(例如,我删除了该people
属性,其他一切都保持不变),则没有任何变化(或中断)。
所以我想知道拥有Store<AppState>
而不是仅仅的主要原因是Store
什么以及使用的主要优点是什么Store<AppState>
(它实际上与仅仅使用有所不同Store
)?此外,有没有办法在 AppState 更改时至少强制执行运行时错误,但其他一切都保持不变?
我用错的可能性也很高,但我还是想知道这些问题的答案。
angular - ngrx 效果给出类型'void'不可分配给类型'ObservableInput'
上面的代码给了我“(有效载荷:任何)=> void”类型的参数不能分配给“(值:任何,索引:数字)=> ObservableInput”类型的参数。类型“void”不可分配给类型“ObservableInput”。错误可能在哪里。我遵循了https://github.com/ngrx/effects/blob/master/docs/intro.md上的 ngrx 效果官方介绍。
angular - 如何在ngrx/effects中创建局部效果
我怎样才能在ngrx/effects中做这样的事情:
如何处理 userOptions 和 userInfo 操作的成功操作,然后重定向到仪表板页面?如果我在 user.SIGN_UP_SUCCESS 序列之外调度 userOptions.Add 和 userInfo.Add 操作,例如从其他页面,我不想重定向到仪表板页面。
回答
维克多·萨夫金。NgRx 的状态管理模式和最佳实践 https://www.youtube.com/watch?v=vX2vG0o-rpM
angular - Angular 2 Redux 不断在 NgFor 中重新渲染
我在我的项目中使用 NGRX,并且在不断地重新渲染组件时遇到了问题。商店每次都会产生全新的对象,如果商店数据相同,我不想重新渲染我的组件。我将表示组件的更改检测更改为ChangeDetectionStrategy.OnPush
lodash memoization ( _.memoization
),但它不起作用
店铺状况
然后将 Store 状态映射为这样的结构
并试图防止cardsB
每次通过来自 lodash 的 memoize 更改存储时重新渲染项目
在我的智能组件中,我有下一个 html
令我惊讶的是,它可以与一个 ngFor 一起正常工作,但如果我有两个 ngFor,它就不起作用了!
我已经花了2天的时间,它正在杀死我,请帮助!
我不是以英语为母语的人,对错误深表歉意。
谢谢!