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

angular - 如何从一个 ForLoop (NgFor) 获取当前 ID 到另一个

对不起,这是我的新问题,以前有一个问题是用新问题编辑这个..

这是我的新问题我已经创建了一个带有滑块的图像弹出窗口,在单击图像库中的一个图像时,我需要在弹出窗口和滑块中显示特定图像,我使用 NgFor 作为图像库,在弹出窗口期间我使用另一个 ngFor滑块,我需要可点击的图像 id 并在弹出窗口中显示特定的图像,我正在使用 ngrx-store 这是我的代码,

0 投票
2 回答
554 浏览

angular - angular + Ionic 2 + ngrx/store - unsubscribe doesn't work

I have a ionic2 app with ngrx/store implemented and i'm encountering a strange behaviour.

store.select(fromRoot.getLoginState) returns a boolean and if it's true I want to set TabsPage as root in Ionic 2. Obviously I only want it to happen once so I unsubscribe in the onDestroy lifecycle hook.

However the unsubscription doesn't seem to work and each time i get a state change it set the view back to Tabspage (so the subscription still fires)

Any ideas?

Cheers

0 投票
2 回答
454 浏览

angular - 将 rxjs 存储包含在 angular2/4 中的最佳实践/正确方法是什么,它应该在引导程序中还是导入中?

当我阅读有关 ngrx 的信息时,我看到了包含商店的不同方式:

我看到的一种方法是包含在导入中:

我见过的另一种方法是将它包含在引导程序中:

哪个是正确的和/或公认的最佳实践?为什么?

我查看了一个没有 rxjs 存储的项目中的随机 app.module.ts 文件,我想知道它应该在这样的文件中正确放置在哪里:

可选地感谢任何关于如何组织“当前”2017 年 5 月 angular2/4 应用程序以与 RxJS 集成的任何参考。

0 投票
1 回答
613 浏览

primeng - PrimeNG 树不适用于可观察的异步

我有一个primeNG树控制的工作实现

我现在*修改我的代码以使用ngrx/store并且需要绑定可观察数据集

我收到以下错误

虽然如果我使用 p-datatable 控件的 p-accordian,它似乎工作正常。

不知道这里有什么问题

0 投票
1 回答
223 浏览

angular - 确保在测试中填充了 ngrx 存储

我有一个功能

我几乎 100% 覆盖了这个函数,唯一缺少的是 data.filter 回调

在此处输入图像描述

有谁知道如何测试这个?使用的测试库是 Jasmine,整个应用程序是用 Angular 构建的。这是我目前进行的测试,它使我达到了当前的覆盖范围(也欢迎对此发表任何其他评论):

编辑

好的,所以我发现问题的原因不是没有调用data.filter回调,而是数据数组本身为空!例如,通过始终确保数据数组中包含某些内容,可以覆盖回调:

在此处输入图像描述

现在显然我不想在我的代码中使用这个 if 语句,所以我想我的问题变成了这个 - 为了测试的目的,我怎样才能始终确保 storeData$ 中有一些东西。现在这已经改变了问题的范围,它现在是一个 ngrx 测试问题。ngOnInit() 函数触发一个异步填充 storeData$ 的操作,但显然这在测试中没有发生。那么如何触发 ngOnInit() 函数,并确保 reducer 已返回并且当我调用 handleCSV() 时将填充 storeData$?

0 投票
0 回答
383 浏览

angular - 如何 ngrx store.dispatch 从 Observable 中获取的值?

我想发送一个取自 Observable 的值,目前我就是这样做的

有没有更好的方法来实现同样的目标,我不知道,类似的东西?

谢谢

0 投票
2 回答
1613 浏览

angular - NgRx - 如何对状态进行切片

我对如何分割每个减速器的各个状态有一些疑问。在很多在线教程(比如这个)中,有一个手动定义的根全局状态,它结合了所有单独的状态,称为AppState.

当我们将包含所有 reducer 的对象字面量传递给 StoreModule 时,这样说是否正确:

对象键r1r2可用于在使用字符串选择器时查询状态切片:

但是,如果我们想要类型安全,我们定义 AppState 接口,并确保对象键与传递给 NgRx 的 reducer 对象字面量的对象键匹配,以便我们可以使用store.select(appstate => appstate.r1)(这是 AppState 接口唯一有用的情况)?

0 投票
1 回答
3200 浏览

angular - NgRx - 状态如何组合和初始化

当我们初始化我们的 Store 时:

我们确实将 reducer 传递给 Store 进行存储。但是我们从来没有真正将初始状态传递给存储,除了在 r​​educers 函数中定义它:

那么,是不是在应用程序启动时,所有的 reducer 都被调用一次,从 reducer 定义中获取初始状态,然后将状态存储在 NgRx Store 中?如果是这样,是不是每个reducer都必须有一个初始状态值?否则状态将始终未定义?

而且,如果所有 reducer 都在 bootstrap 中调用,NgRx 如何确保 reduce 必须达到默认情况?:

非常感谢!任何帮助表示赞赏!

0 投票
1 回答
702 浏览

angular - Angular 2 Ngrx 商店:更新数组

我目前有一个基于 ngrx/store 架构的 angular2 CRM 应用程序。我有用于更新、列出和添加客户的 CRUD 功能,这些功能运行良好,并且全部使用 ngrx/effects 绑定到 Firebase 数据库。

为了使智能组件与商店同步,我有以下代码。同样一切正常,但是我不确定如何更新表单中的数组-请参见下面的代码:-

这是我用商店中的数据更新表单的地方

我想用地址表单做类似的事情,但不确定如何执行上述操作来填充表单中的数组对象。欢迎任何想法/建议

当我登录下面的控制台时,我实际上有地址详细信息,只需要知道如何将它们放入表单对象中。

完整的客户详细信息智能组件

0 投票
3 回答
7666 浏览

angular - Angular 2+/4/5/6/7:智能、愚蠢和深度嵌套的组件通信

注意:为简单起见,将组件深度视为:

关于智能/大/父/子组件如何在多级(至少 3 个级别)链上进行通信和传递数据的方式有多种选择和条件。我们希望将我们的“智能”(祖)父组件保留为唯一可以访问我们的数据服务(或原子/不可变存储)的组件,它将推动与“哑”(孙)子级的信息交换。我们看到的选项是:

  1. 反模式(?):通过@Input/@Output 绑定在组件链上下传递数据。这就是一些人所说的“无关属性”或“自定义事件冒泡问题”(例如:这里这里。)。不去。
  2. 反模式:智能组件通过 @ViewChildren 或 @ContentChilden 访问哑(大)子级。这再次硬连线孩子,仍然没有为(大)孩子创建一个干净的机制来将数据向上传递给智能组件。
  3. 共享消息服务,如 angular.io 食谱中所述,这里是一篇优秀的文章
  4. ?

现在在“3”的情况下,哑(大)子必须注入消息服务。这让我想到了我的问题:

Q1:对于每个“笨”(孙)子来说,注入消息服务在直觉上似乎很奇怪。消息服务的最佳实践是为这个家庭提供专用服务,还是搭载上面提到的“智能”祖父母负责的数据服务?

Q1A:此外,如果所有组件都将注入服务,这比在链上上下添加@Input/@Output 绑定要好得多吗?(我看到“愚蠢”组件需要某种方式来获取信息的论点)

Q2:如果“聪明”的祖父母正在与类似 redux 的商店(我们的 ngrx)进行通信怎么办?再一次,与“哑”组件的通信最好通过注入/专用消息服务进行,还是最好将存储注入每个“哑”组件......或者?请注意,组件间通信是“动作”(例如:表单验证、禁用按钮等)和数据(即,将数据添加到/更新存储或服务)的组合。

想法非常感谢!