问题标签 [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 回答
1963 浏览

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它可以工作,但不能使用热/冷弹珠

0 投票
1 回答
721 浏览

angular - ngrx/store:subscribe 工作正常,但模板中的异步给出 [object Object]

当前的行为是什么?

我正在尝试获取自定义类型的 observable

在我的组件中

当我像下面这样使用时

它给了我[object Object],但如果订阅,this.config$.subscribe(data => console.log(data));我会在控制台中得到正确的对象。

任何人都可以帮忙吗?

0 投票
0 回答
644 浏览

angular - ngrx store angular 2 在页面刷新时刷新商店

我正在使用ngrx store v.4.xx,目前我将用户存储在本地存储以及ngrx 存储中。将对象存储到本地存储后,我正在填充我的 ngrx 存储。稍后在随后的页面中,我使用 ngrx 存储进行数据评估。但是存储在本地存储中会导致敏感对象信息的暴露。

当我使用 ngrx 存储在页面刷新时进行评估时,如果没有本地存储,则整个存储都会刷新。如何在页面刷新时保持ngrx存储状态,而没有角度2中的任何存储。?

任何帮助将不胜感激......

0 投票
1 回答
165 浏览

angular - 如何以 redux 模式集成扩展面板?

我正在使用在<mat-expansion-panel>表单组件的 UI 上定义一些可折叠/可扩展的区域。表单与@ngrx/store 集成在redux 中,问题是如果我<mat-expansion-panel>在展开面板上使用[expanded] 属性会展开但动画不会触发。这是一个错误还是预期的行为?

如何在不破坏动画的情况下将扩展面板集成到 @ngrx 中? 是我的存储库

0 投票
1 回答
559 浏览

angular - 在ngrx & ngrx/effects 下处理表单错误

我正在尝试在ngrx 下设计一种身份验证机制,但我还没有完全理解ngrx。

身份验证是这样工作的:客户端输入他的电子邮件和密码,使用他的凭据向 /api/auth 发出请求,如果凭据不正确,我们会收到错误消息,并且会在登录表单上看到错误消息。如果凭据正确,我们会收到用户对象并将用户重定向到主页。

这是我的看法

在此处输入图像描述

所以我正在努力的部分是何时@Effect收到响应。

我假设在我的商店中,我有一个userReducer包含用户状态的。当响应来自api/auth用户时,则将一个操作SET_USER分派给减速器以设置用户。但是我不确定如何处理错误消息。

  • 我是否也需要为表单提供减速器?
  • 每种形式都需要减速器吗?在我看来,错误消息不是应用程序长期存在状态的一部分。这只是应该显示然后忘记的东西。
  • 如何在登录成功时重定向?
0 投票
1 回答
22195 浏览

ngrx - 什么是 ngrx createSelector 和 createFeatureSelector?

我一直在阅读ngrx示例应用程序的代码,发现两个函数调用

  1. createFeatureSelector<AuthState>('auth');

  1. createSelector(selectAuthState,(state: AuthState) => state.status);

这是做什么的?

0 投票
2 回答
3901 浏览

ngrx - 使用构造函数在 store 上进行选择,使用 ngOnInit 从 store 调度

我的问题与从 ngrx 商店调度选择有关。

让我们看一下官方示例应用程序中的以下代码:

我想了解是什么促使选择ngOnInit.constructor

任何人都可以提供解释吗?

PS顺便说一句,上面是来自ngrx示例应用程序的示例代码,可以在这里找到:https ://github.com/ngrx/platform/blob/master/example-app/app/books/containers/collection-page .ts

0 投票
1 回答
1786 浏览

angular - 如何使 ngrx-store 与 canLoad 防护一起使用

我不知道这是否是一个好习惯。但以下是我正在尝试做的事情:

我有 2 个延迟加载的模块:ManagementModuleConfigurationModule,并且路由配置如下:

基本上这个想法是检查系统状态并重定向到不同的阶段,例如。如果 sys 尚未配置,则重定向到/configuration,否则,重定向到/management.

在我添加@ngrx/store到项目之前,这两个canLoad守卫很简单:

现在我想采用所有 @ngrx/{store,effects,router-store} 库,然后将上面的守卫更改为:

当然,副作用是定义的:

但是导航没有发生,没有ROUTER_NAVIGATION发出任何动作。我在这里错过了什么吗?而且我想知道这是否是一个好习惯?我确实找到了一些canActivate守卫用法的例子,但没有找到守卫的例子canLoad。请帮忙,谢谢!

0 投票
1 回答
1200 浏览

angular - 从 Angular HttpInterceptor 中的可观察对象返回可观察对象

我正在使用@ngrx/store从 store 获取令牌并将其放置在 HTTP 标头中,我尝试使用 flatmap mergeMap 但它们都不断复制 http 请求,当我使用 take(1) 时,它会继续循环请求并挂起,这是我有的:

0 投票
3 回答
9279 浏览

angular - Angular ngrx-store:如何在模块之间共享存储(主模块/功能模块)

我有两个角度模块:mainfeature

主/根模块:

功能模块:

我需要访问主模块中的“功能”数据片段,以根据存储在feature模块中的数据有条件地显示/激活应用程序选项卡。

(换句话说,我需要所有模块main和任何功能模块都可以访问的全局/共享状态。)

  1. 有可能这样做吗?
  2. 它被认为是好的做法吗?

目前我不能这样做,因为featuremain 中没有状态AppState

并且 typescript 指示错误this.store.select('feature'),因为没有featuremain store 的键AppState

使用selectorthis.store.select(selectFeatureValue)我收到运行时错误:

我在主 AppComponent 中遇到错误:

TypeError:无法读取未定义的属性“someValue”