问题标签 [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.
testing - 如何正确测试ngrx 4中的效果?
有很多教程如何在ngrx 3中测试效果。
但是,我发现只有 1 或 2 个用于ngrx4(他们通过EffectsTestingModule删除了经典方法),例如官方教程
但是,就我而言,他们的方法不起作用。
effects.spec.ts(在下面链接中的src/modules/list/store/list下)
effects.ts(在下面链接中的src/modules/list/store/list下)
错误
注意:效果使用涉及写入 PouchDB的服务。但是,问题似乎与此无关,并且效果在正在运行的应用程序中也有效。
完整代码是一个 Ionic 3 应用程序,可在此处找到(只需克隆、npm i 和npm run test)
更新:
使用ReplaySubject它可以工作,但不能使用热/冷弹珠
angular - ngrx/store:subscribe 工作正常,但模板中的异步给出 [object Object]
当前的行为是什么?
我正在尝试获取自定义类型的 observable
在我的组件中
当我像下面这样使用时
它给了我[object Object]
,但如果订阅,this.config$.subscribe(data => console.log(data));
我会在控制台中得到正确的对象。
任何人都可以帮忙吗?
angular - ngrx store angular 2 在页面刷新时刷新商店
我正在使用ngrx store v.4.xx,目前我将用户存储在本地存储以及ngrx 存储中。将对象存储到本地存储后,我正在填充我的 ngrx 存储。稍后在随后的页面中,我使用 ngrx 存储进行数据评估。但是存储在本地存储中会导致敏感对象信息的暴露。
当我使用 ngrx 存储在页面刷新时进行评估时,如果没有本地存储,则整个存储都会刷新。如何在页面刷新时保持ngrx存储状态,而没有角度2中的任何存储。?
任何帮助将不胜感激......
angular - 如何以 redux 模式集成扩展面板?
我正在使用在
<mat-expansion-panel>
表单组件的 UI 上定义一些可折叠/可扩展的区域。表单与@ngrx/store 集成在redux 中,问题是如果我<mat-expansion-panel>
在展开面板上使用[expanded] 属性会展开但动画不会触发。这是一个错误还是预期的行为?如何在不破坏动画的情况下将扩展面板集成到 @ngrx 中? 这是我的存储库
angular - 在ngrx & ngrx/effects 下处理表单错误
我正在尝试在ngrx 下设计一种身份验证机制,但我还没有完全理解ngrx。
身份验证是这样工作的:客户端输入他的电子邮件和密码,使用他的凭据向 /api/auth 发出请求,如果凭据不正确,我们会收到错误消息,并且会在登录表单上看到错误消息。如果凭据正确,我们会收到用户对象并将用户重定向到主页。
这是我的看法
所以我正在努力的部分是何时@Effect
收到响应。
我假设在我的商店中,我有一个userReducer
包含用户状态的。当响应来自api/auth
用户时,则将一个操作SET_USER
分派给减速器以设置用户。但是我不确定如何处理错误消息。
- 我是否也需要为表单提供减速器?
- 每种形式都需要减速器吗?在我看来,错误消息不是应用程序长期存在状态的一部分。这只是应该显示然后忘记的东西。
- 如何在登录成功时重定向?
ngrx - 什么是 ngrx createSelector 和 createFeatureSelector?
我一直在阅读ngrx示例应用程序的代码,发现两个函数调用
createFeatureSelector<AuthState>('auth');
和
createSelector(selectAuthState,(state: AuthState) => state.status);
这是做什么的?
ngrx - 使用构造函数在 store 上进行选择,使用 ngOnInit 从 store 调度
我的问题与从 ngrx 商店调度和选择有关。
让我们看一下官方示例应用程序中的以下代码:
我想了解是什么促使选择从ngOnInit
.constructor
任何人都可以提供解释吗?
PS顺便说一句,上面是来自ngrx示例应用程序的示例代码,可以在这里找到:https ://github.com/ngrx/platform/blob/master/example-app/app/books/containers/collection-page .ts
angular - 如何使 ngrx-store 与 canLoad 防护一起使用
我不知道这是否是一个好习惯。但以下是我正在尝试做的事情:
我有 2 个延迟加载的模块:ManagementModule
和ConfigurationModule
,并且路由配置如下:
基本上这个想法是检查系统状态并重定向到不同的阶段,例如。如果 sys 尚未配置,则重定向到/configuration
,否则,重定向到/management
.
在我添加@ngrx/store
到项目之前,这两个canLoad
守卫很简单:
现在我想采用所有 @ngrx/{store,effects,router-store} 库,然后将上面的守卫更改为:
当然,副作用是定义的:
但是导航没有发生,没有ROUTER_NAVIGATION
发出任何动作。我在这里错过了什么吗?而且我想知道这是否是一个好习惯?我确实找到了一些canActivate
守卫用法的例子,但没有找到守卫的例子canLoad
。请帮忙,谢谢!
angular - 从 Angular HttpInterceptor 中的可观察对象返回可观察对象
我正在使用@ngrx/store从 store 获取令牌并将其放置在 HTTP 标头中,我尝试使用 flatmap mergeMap 但它们都不断复制 http 请求,当我使用 take(1) 时,它会继续循环请求并挂起,这是我有的:
angular - Angular ngrx-store:如何在模块之间共享存储(主模块/功能模块)
我有两个角度模块:main和feature:
主/根模块:
功能模块:
我需要访问主模块中的“功能”数据片段,以根据存储在feature
模块中的数据有条件地显示/激活应用程序选项卡。
(换句话说,我需要所有模块main和任何功能模块都可以访问的全局/共享状态。)
- 有可能这样做吗?
- 它被认为是好的做法吗?
目前我不能这样做,因为feature
main 中没有状态AppState
:
并且 typescript 指示错误this.store.select('feature')
,因为没有feature
main store 的键AppState
。
使用selector
:this.store.select(selectFeatureValue)
我收到运行时错误:
我在主 AppComponent 中遇到错误:
TypeError:无法读取未定义的属性“someValue”