问题标签 [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.

0 投票
1 回答
1633 浏览

angular - 使用 ngrx-store / 效果填充下拉信息

我正在使用带有ngrx-store和ngrx-effects的angular 4。我有一个简单的表单来加载用户信息并让它与效果一起工作,然后调度 Load_User_success 操作来更新商店。

我有个问题。加载信息以填充表单具有的下拉列表并同时使用 ngrx 加载用户信息的最佳方式是什么?

0 投票
2 回答
809 浏览

typescript - 找不到在同一文件中定义的名称;如何实现联合类型的 const 值?

我导出了一些字符串常量并尝试将它们用于同一文件中的类型定义,但它不起作用。

TS2304:找不到名称“SET_DETERMINATION”。

TS2304:找不到名称“SET_HIGHLIGHTING”。

TS2304:找不到名称“SET_TEXT”。

我可以通过使用字符串值本身定义我的类型来解决这个问题,即

但这似乎比引用常量更脆弱。

有什么办法可以实现以下目标吗?

  1. 仅声明一次文字字符串值
  2. 导出带有字符串值的常量
  3. 定义常量字符串值的联合类型

对于上下文,我希望构建一个reducer,它将接受遵循如下接口的调度操作(仅具有更具体的有效负载)

因此,在引用它的模块中,我需要常量及其接口的类型定义。

0 投票
2 回答
2566 浏览

angular - Angular/ngrx - 从状态分组和聚合值

我试图弄清楚如何从对象列表开始获取分组和聚合的值数组(我可以与 ngFor 一起使用),而对于我的生活,我无法让它工作。数据(这是我状态的一部分)看起来像这样:

我想要得到的结果是这样的(注意类型不同):

所以,基本上我想为具有该名称的所有对象找到不同的“名称”和“值”的总和,并具有可供 ngFor | 使用的输出。异步的。

目前,我获得不同价值的几乎可行的解决方案是:

我很乐意从这个开始;问题是,如果我不添加 toArray(),Typescript 会抱怨“Type string is not assignable to type any[]”;如果我在 distinct() 之后添加 toArray(),它不会再抱怨,但 subscribe() 不会产生任何结果。

我究竟做错了什么?我应该把所有东西都移到reducer(但是我不知道我是否可以改变同一个reducer中不同动作返回的对象类型)?非常感谢任何帮助。

更新:我会更高兴有一个工作 groupBy() 实现,因为它应该正是它的用例。

0 投票
2 回答
1149 浏览

angular - 尝试在 nativescript-angular 移动应用程序中使用 ngrx-store-localstorage 会导致“未定义本地存储”

ReferenceError: localStorage 未定义

文件:“finle:///data/data/org.nativescript/dist/index.js。第 104 行,第 40 列

StackTrace:框架:函数:'exports.localStorageSync',文件:'file:///data/data/org.nativescript.MyApp/files/app/tns_modules/ngrx-store-localstorage/dist/index.js',行:104,column:41 Frame: finction:",file:'file:///data/data/org.nativescript.MyApp/files/app/core/store/index.js',line:19,column:69

是必须使用https://www.npmjs.com/package/nativescript-localstorage 还是我们可以使用https://github.com/natural-apptitude/ngrx-store-ionic-storage 或 ngrx-store-localstorage

0 投票
3 回答
6800 浏览

nativescript - 商店没有供应商!注入错误

app.component.html

app.component.ts

app.module.ts

app.routing.ts

主要的.aot.ts

main.ts

包.json

存储/index.js:

存储/reducers.ts

我得到的错误是:

商店没有供应商!

injectionError (file:///data/data/org.nativescript.MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:1238:86) [angular] 在 noProviderError (file: ///data/data/org.nativescript.MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:1276:12) [angular] 在 ReflectiveInjector_._throwOrNull (file:///data /data/org.nativescript.MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:2777:19) [angular] 在 ReflectiveInjector_._getByKeyDefault (file:///data/data/org .nativescript.MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:2816:25) [角度] 在 ReflectiveInjector_._getByKey (file:///data/data/org.nativescript.MyApptarchec /files/app/tns_modules/@angular/core/bundles/core.umd.js:2748:25) [angular] 在 ReflectiveInjector_.get (file:///data/data/org.nativescript.MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:2617:21) [angular] 在 AppModuleInjector.NgModuleInjector.get (file:// /data/data/org.nativescript.MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:3585:52) [angular] 在 resolveDep (file:///data/data/org .nativescript.MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:11046:45) [角度] 在 createClass (file:///data/data/org.nativescript.MyApptarchec/files /app/tns_modules/@angular/core/bundles/core.umd.js:10899:35) [angular] 在 createDirectiveInstance (file:///data/data/org.nativescript.MyApptarchec/files/app/tns_modules/@ angular/core/bundles/core.umd.js:10730:37) [angular] 在 createViewNodes (file:///data/data/org.nativescript.MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:12093:49) [angular] 在 createRootView (file:///data/data/org.nativescript.MyApptarchec/files/app/ tns_modules/@angular/core/bundles/core.umd.js:11998:5) [angular] 在 callWithDebugContext (file:///data/data/org.nativescript.MyApptarchec/files/app/tns_modules/@angular/core /bundles/core.umd.js:13213:42) [angular] 在 Object.debugCreateRootView [as createRootView] (file:///data/data/org.nativescript.MyApptarchec/files/app/tns_modules/@angular/core /bundles/core.umd.js:12673:12) [角度]MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:13213:42) [angular] 在 Object.debugCreateRootView [as createRootView] (file:///data/data/org.nativescript. MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:12673:12) [角度]MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:13213:42) [angular] 在 Object.debugCreateRootView [as createRootView] (file:///data/data/org.nativescript. MyApptarchec/files/app/tns_modules/@angular/core/bundles/core.umd.js:12673:12) [角度]

0 投票
1 回答
3030 浏览

angular - 如何在 ngrx 商店中使用单个操作更新多个减速器的状态?

我的应用程序中有多个减速器,它们组合在 app.reducers.ts 中。当我的操作发生时,一个减速器的状态应该使用另一个减速器当前状态的单个值更新(因此计划外的交付将成为计划),然后从第二个减速器的状态中删除该值。这是我可以删除它的方法,但在此之前我需要更新其他状态。

从应用程序的角度来看,调用 2 个动作是非常糟糕的。所以我需要以某种方式在更高的层次上处理这个问题。

0 投票
0 回答
477 浏览

angular - 全局错误处理问题

我已经配置了我的全局错误处理程序:

所以基本上如果发生错误,我会调用我的服务来调度操作,所以我会显示带有错误消息的材料小吃栏:

问题是,无论我handleError()在商店中发送什么,都没有得到更新。

我所有的调度员都在外面工作得很好,handleError()但是当我检查调试时,这个调度员reducers没有被调用。

基本上在错误handleError()被调用然后dispatcher被解雇但状态没有被改变的情况下,原因是因为在这种情况下没有调用reducer。但是,如果我从AppService任何组件或外部任何其他地方调用相同的服务 (),那一切都很好handleError()

另外,我只是将整体照亮StoreGlobalErrorHandler而不是使用 myAppService来查看它是否有任何区别,但结果只是通过dispatching直接形式的操作获得了相同的结果handleError()-reducer仍然没有被调用。

任何想法为什么?

更新

我的服务实际上是被调用的,基本上就像@olsn建议的那样,我也添加.catch了:

但是并没有帮助两个.catch()块在抛出错误时首先被调用。但是,当单击任何buttons/routes以继续时,handleError()我的调度仍然无法正常工作。

0 投票
1 回答
48 浏览

ngrx-effects - 我可以在 ngrx 商店中“挂钩”订阅吗

我想跟踪某个密钥在@ngrx/store 中订阅了多少次。我不想在每个订阅的组件中重复代码,但希望以某种方式连接到 select() 中。我认为@effects 不适用于这里,因为我没有查看已调度的操作。

有人对我将如何实现这一点有任何想法吗?

0 投票
1 回答
858 浏览

angular - Webpack 和节点外部

我正在尝试专门使用这个模板的通用角度 v4。

https://github.com/FrozenPandaz/ng-universal-demo/tree/master/src

我使用的模块包括@ngrx\store 和@ngrx\effects,仅举几例。我遵循默认配置,除了在节点模块中我添加了以下内容

我使用它来能够使用像猫鼬等库。

我正在尝试将编译与 aot 一起使用,但是出现以下错误在此处输入图像描述

据说以下链接中有解决方案,但我无法实现

https://github.com/ngrx/store/issues/387

我最后的外部是

但我有同样的错误,我将不胜感激任何可能的帮助

0 投票
1 回答
660 浏览

angular - ngrx/store 容器组件 - 直接使用 store 吗?还是门面?

在实施 ngrx/store 解决方案时,我正在创建智能/容器组件。我在一些博客中阅读了一些相互矛盾的想法。

智能组件应该注入商店吗?或者我应该创建一个作为门面的服务,在服务中注入商店?

虽然使用服务“隐藏”商店本身的想法很好,但它似乎使一些代码重复。例如,如果在组件中我需要调度一个动作“ADD_USER”,我将在服务中调用一个名为:addUserAction(user) 的函数,在该服务中,我将有一个线性函数:store.dispatch({type: ADD_USER,有效载荷:用户})

谢谢 !