问题标签 [ngrx]

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 投票
2 回答
8580 浏览

angular - Angular 2 路由器 - 命名插座

文档不是很好,但我试图在同一页面/路由上有不同的路由器插座。

我的 app.component.html 中有这个

我的 app.routes.ts

所以在我的起始页(即“example.com”,而不是“example.com;dashboard:dashboard”)上,我想在主路由器插座中显示 Homecomponent,在 Dashboard 插座中显示我的 Dashboardcomponent。这适用于 ngrs/router,但由于它已被弃用,我正在尝试迁移。是否可以在角度/路由器中没有 ;dashboard:dashboard ?

使用此配置,我将被重定向到 404。我也尝试过,但没有运气:

有没有人设法让命名的路由器插座工作?

更新 关于从 ngrx/router 到 angular/router 的迁移说明,您应该能够拥有:

但是当我访问 example.com/blog 时,我在控制台中收到此错误:

错误:无法匹配任何路由:“博客”

https://github.com/ngrx/router/blob/master/docs/overview/migration.md

0 投票
4 回答
5318 浏览

angular - 未在 ngrx/effects 中调度动作时陷入无限循环

我正在使用 Angular2 和 ngrx/store 和 ngrx/effects 进行状态管理。

当某个操作失败时,我想显示一条错误消息,但似乎我无法在一个@Effects()块中执行此任务。请参阅以下内容:

当上面的代码运行时,警报会无限次运行,直到浏览器崩溃。似乎@Effect() 必须返回一个新的dispatch(),但我不明白为什么。为什么上面的 alert() 会运行无数次?

编辑:没有SelectOfficeActions.LOAD_FAIL多次派遣。只有一次

0 投票
3 回答
3879 浏览

angular - Angular 2 Async 管道不使用 Observable 呈现新值

我在我的应用程序中使用 NgRx 商店。

主页.html

主页.ts

当我编辑数组项时,异步管道不会更新视图,但“数组”对象中的值是正确的(订阅内的 console.log 显示更新的值)。当我单击 DOM 中的某个位置(打开模式,单击按钮...)时,查看带有新值的更新。

我还登录了子组件“ngOnChanges”,它不会以新值触发。

0 投票
1 回答
759 浏览

javascript - 如何在 ngModule 之间共享服务和状态

  1. 我们如何在 ngModules 之间使用ngrx共享状态?
  2. 我们如何在 ngModules 之间共享同一个服务实例?

角2-RC5。

0 投票
1 回答
3109 浏览

angular - ngrx/store 后操作/效果 UI 通知

我正在使用ngrx/store 和ngrx/effects。

这是流量,

  1. 用户点击登录按钮
  2. 登录操作已发送
  3. $effects 执行 http.post 凭据以进行登录
  4. 调度 LOGIN_SUCCESS 或 LOGIN_FAILURE 操作

问题:我想执行一些 UI 任务,例如,在操作后拉下模式,或显示错误消息的弹出窗口。

我将如何订阅组件中的响应?

多谢你们。

0 投票
1 回答
1520 浏览

typescript - 更新 ngrx reducer 中的状态字段

我有这样的类型:

}

在我的减速器中,我有一个这样定义的状态:

}

我的组件更新本文档中的字段,通常插入或删除节点。数据存储在 mongo db 中,通过调用服务在 @Effect 中完成对 db 的读取和写入。

我不希望每次有小的变化时都更新整个文档,而是 @addtoset 或类似的。所以@Effect 需要对选择器有足够的了解,以及需要更改的特定字段。

在 reducer 函数中设置状态的最佳方法是什么?状态是可观察的,因此任何更改都将反映在任何订阅者中。如果我在对象中添加一个键,比如编辑:{_id:thisid,...} 我在@Effect 函数中收到打字稿错误,即属性“编辑”在类型关系上不存在。

@Effect 保存数据并获取更新的文档,将其分派给更新状态的 UPDATE_COMPLETE 减速器函数。

编辑:我会尽力澄清。除了我的误解之外,可能根本没有问题。但是这里。

我订阅了状态,当reducer中状态改变时,组件和视图会更新。

我的后端数据存储只需要更改的数据来更新集合中的文档。

组件中的节点和本体会频繁快速地变化;简单地添加一些东西或删除一些东西。我希望视图能够快速反映变化。

所以组件中的动作调用看起来像这样,其中 addNode 是一个调度动作的函数。

动作创建者将如下所示:

@Effects 是进行数据库调用的地方。

我的问题是 toPayload 返回什么?它是返回reducer 中设置的更新状态,还是返回动作的有效负载?

0 投票
1 回答
4852 浏览

angular - ngrx/effects 中的 if/else 怎么办?

我正在使用ngrx/效果。我想根据foo商店中的状态调度不同的操作。

这就是我现在的做法:

有没有办法在这篇文章partition中使用 RxJS 5 运算符,如, groupBy, if, ?我现在无法正确使用它。case

0 投票
4 回答
24438 浏览

angular - 如何重置ngrx/store的所有状态?

我正在使用 Angular 2 和ngrx/store。我想在用户调度时重置整个商店状态USER_LOGOUT

我阅读了 Dan Abramov 关于如何重置 Redux 商店状态的回答?,但是我没有弄清楚如何rootReducer正确编写以及使用ngrx / store时将其放在哪里。

或者有没有其他方法可以在ngrx/store 中处理这个问题?

0 投票
1 回答
816 浏览

angular - Angular2 NgRx.Store 和提取选择器以供重用

这是我的商店:

以下是我的预测:

以下是我通过投影访问数据的方式:

我的问题:

我目前将我的预测分成两部分,这样我就可以在其他预测中重复使用一些部分(ie: let currentVid = _getVideoById(s, id);)

有没有一种方法可以将我的预测声明为一个块并在其他预测中重用它们?

一种投影组合?

我见过这样的例子,但每次他们“减少”||“缩小”投影的范围(即:我们从视频开始,我们在视频中更深入,我们永远不能回到像“评论”这样的其他分支)。我对这一切都很陌生,所以非常感谢一些建议,

谢谢你。

0 投票
1 回答
1625 浏览

angular - 如何使 @ngrx/store 在 RC.6 上使用延迟加载

我有一个带有延迟加载模块的工作 Angular 2 RC.6 应用程序。我添加了 ngrx/storengrx/effects。在我添加ngrx/store-devtoolsngrx/store-log-monitor之前,我认为一切正常。

我意识到即使 http 工作(并且收到了数据),也没有使用状态。经过一整天的尝试了解原因后,我意识到这是因为延迟加载ngrx-example 应用程序未使用延迟加载。

我发现关于使ngrx/store 与延迟加载一起工作的唯一一件事就是这个,但我不能让它工作。这不包括 SharedModule。

欢迎任何帮助。