问题标签 [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 投票
1 回答
279 浏览

typescript - @ngrx/store-devtools:instrumentStore() 返回一个对象数组而不是提供者

我正在使用这个种子开发一个 Angular 2 项目:angular2-webpack-starter,我也在使用 @ngrx/store 和@ngrx/store-devtools

在引导期间,应用程序抛出错误:

zone.js:260 - Uncaught Invalid provider - only instances of Provider and Type are allowed, got: [object Object]

以下是我使用种子设置 @ngrx 的方法:

将包添加到vendor.browser.ts

添加 angular 2 ( browser-providers.ts)的提供程序

将监视器添加到我的应用模板

<ngrx-store-log-monitor toggleCommand="ctrl-h" positionCommand="ctrl-m"></ngrx-store-log-monitor>.


简单的。

但是当我console.log返回instrumentStore()时,我得到一个对象数组。但是 Angular 需要和提供者的数组。

这是我的软件包的版本:

  • 角2:rc3
  • @ngrx/核心:1.0.1
  • @ngrx/商店:1.5.0
  • @ngrx/store-devtools:2.0.0-beta1
  • @ngrx/store-log-monitor:2.0.0-beta1

如果有问题,我会在 Github 上报告。但我不确定是否正确设置了所有内容。

谢谢。

0 投票
1 回答
537 浏览

angular - Angular2中路由中的常量参数

我需要在路线中保存当前选择的语言。

例子:

有没有一种简单的方法可以在路由上设置一些前缀,或者我应该在每条路由中设置 lang?

主要思想是写在模板中,例如

但导致路由器有类似的东西

PS我使用ngrx/路由器

0 投票
1 回答
701 浏览

typescript - Angular2 rc.4 升级中断测试-platformStrategy.getBaseHref 不是函数

我将我的 Angular2 应用程序升级到 Release Candidate 4,从那时起我不得不重新设计我的一些测试,因为新的候选版本引入或贬值了一些项目。然而,我的大量测试现在失败了,我不知道为什么,但我被以下错误困扰,我不确定为什么,这必须发生在我的 50% 的测试中

所以,我认为有问题或“@ngrx/router”有问题:“^1.0.0-beta.1”但我可能是错的。所以我的测试看起来像这样......(我试图减少这个只是为了让我知道我在做什么)。

升级前一切正常。有没有人遇到过类似的问题platformStrategy.getBaseHref is not a function?我再次使用 Angular2 rc4,“karma-jasmine”:“^1.0.2”和“@ngrx/router”:“^1.0.0-beta.1”。提前致谢。

**** 更新 ****

我不能确定,但​​我认为问题addProviders([])出在 IDE 中,因为我的 IDE 中有错误 - “无法解析 addProviders 的符号”,但它在我的节点模块中,并且我正在正确导入它!

0 投票
2 回答
372 浏览

typescript - 将值从父组件传递给angular2中的ngForm的子组件?

我想将输入值从父组件()传递给子组件()。(我尝试使用@input,但它不起作用。我想我犯了一些错误?)

父组件:

子组件:

0 投票
2 回答
4845 浏览

angular - @ngrx/store:从一个动作中调度。好用吗?怎么做?

我正在使用 Angular 2 和@ngrx/store.question 开发一个关于良好实践以及如何做到这一点的项目。

我开发了一个“网络查找器”来管理文件。所以我可以做一些基本的动作,比如复制、移动等。

我不会解释原因,因为这只是一个示例,但移动文件包含 3 个步骤:

  • 逻辑:做一些验证。
  • 发送一个动作 A
  • 发送一个动作 B

这 3 个步骤是在我的角度组件内完成的。我已经考虑过了,我认为简单地调度一个执行一些验证的动作并调度其他 2 个动作是一个更好的主意。

我为什么要这样做?首先,它更容易阅读

而不是

其次,我可以copy即时调度我的动作创建者而不会遇到任何副作用,因为验证将在动作内部执行。

实际上,我可以在不进行验证的情况下发送我的action1et 。action2

最后,我所有的逻辑都在我的行动中。我可以让我的组件保持简单并专注于他们的工作(管理 UI 等)。这是伟大的。

问题1:好的做法?

这样做是个好主意吗?我想是的,但你的经历让我很感兴趣。

问题2:如何?

怎么做 ?我的动作创建者只是函数。我不能用 来装饰它们Injectable并使用constructor来注入实例。

以下是动作创建者的示例:

我怎样才能从那些动作创建者那里分派?

我已经使用 redux 作为 Redux 与 React 的实现,并且我创建了一个小包,允许我从动作创建者调度:redux-thunk

0 投票
0 回答
420 浏览

typescript - 如何使用ngrx/router在位置更改上应用Angular2(rc.4)动画

免责声明- 请注意,我知道我在这里含糊不清而且水平很高,但我目前不知道我需要做什么......

我正在使用或者我应该说我正在尝试学习 Angular2,我真的很想使用发布候选版 3/4 中提供的新动画 API。文档在这里:https ://angular.io/docs/ts/latest/guide/animations.html

现在,这一切看起来都很简单,但是当我们更改应用程序 url(导航到子视图)时,我想应用 CSS 转换,但是我不确定如何在 main.ts 组件或任何组件中捕获位置更改事件我希望在其中添加animations属性。文档给出的示例使用@triggerName语法来应用或切换动画,但我不确定这是否适用于希望动画页面转换时。

所以如果这是我的main.html

这是在我的main.ts

我正在使用@ngrx/router,我知道这带有一个 LocationChange 类。非常感谢您的任何建议......如果您知道一个好的教程的链接,将不胜感激!

这是我试图用 AngularJS 实现的效果:https ://codepen.io/schonert/pen/InAzi

0 投票
1 回答
754 浏览

angular - 如何将 Angular2 路由器连接到 ngrx/store?

我正在使用 ngrx/store 来管理我的 Angular2 应用程序中的状态。

如何将 Angular2 中最新的(3.0.0)路由器连接到 ngrx/store。这里提供的方法是关于旧的 Angular2 路由器:https ://github.com/CodeSequence/ngrx-store-router

基本上我想做的就是让我的路由器成为我的状态的一部分。

0 投票
1 回答
3747 浏览

typescript - 无法实例化循环依赖

我正在使用@ngrx/effects@angular/router。(Angular 2 版本 RC4)

如果我private router: Router在效果中添加这一行:

我会收到这个错误:

例外:无法实例化循环依赖!(Token Application Initializer -> Token @ngrx/effects Bootstrap Effects -> Router -> ApplicationRef -> ApplicationRef_)

我该如何解决这个问题?谢谢

0 投票
1 回答
11804 浏览

angular - Angular2 路由器 VS ui-router-ng2 VS ngrx 路由器

使用ui-router-ng2而不是新的 Angular2 路由器有什么好处和坏处?过去我在 Angular 1.x 中使用 ui-router 而不是使用 ngRoute,因为我需要更好地支持嵌套状态/路由。

那么现在,Angular2 呢?我想听听你的意见,这样我就可以评估这两个机会。

此外,在谷歌上搜索和搜索我发现了我不知道的ngrx/router 。你能告诉我 Angular2 的内置路由器、Angular2 的新ui-routerngrx 路由器有什么区别吗?

0 投票
1 回答
956 浏览

angular - @ngrx/store 订阅商店的一部分并避免检测到其他部分的更改

背景

我商店中的一个减速器处理在应用程序中选择的东西。该商店的界面(我们称之为app)可能如下所示:

因此,我希望订阅仅在选择不同的“项目”时才执行操作。我写了这样的东西:

此功能在selectedProject更改时起作用。但是,它也会在selectedPart更改时发挥作用。显然,无论地图如何,它都会倾听整个app商店的声音。这就说得通了。

问题

我不希望这种情况发生。我只希望我的函数在selectedProject更改时执行。

我知道我可以分成不同selectedProjectselectedPart商店来解决这个问题。但是,我很快就会拥有很多很多商店。也许这就是它的本意?

还有其他方法吗?我可以使用此界面保留商店并拥有仅检测selectedProject商店部分更改的订阅吗?