问题标签 [akita]

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 回答
1861 浏览

angular - 如何使用角度将对象添加到包含 Array 的现有动态秋田商店

我在秋田商店中存储动态值而不创建模型。

我正在尝试将对象从存储添加到现有数组,我是秋田新手,所以尝试深度克隆秋田存储值,然后将该对象推送到数组并将更改后的数组再次设置为存储,但它正在重复存储中的值

我在stackblitz中复制了它

0 投票
1 回答
154 浏览

angular - 用秋田实现基本抽象状态的适当方法

我试图实现这样的事情,我有点困惑。假设我需要实现各种基于网格的页面,它们的设计方式或多或少相同,但它们每个都有一些特殊性。这就是为什么我需要一些基本的抽象存储/查询服务,我打算在这些服务中实现通用逻辑。

每个网格都将使用以下子级进行操作BaseLineItem

那就是我尝试实现它的方式

假设对于每个表单,我将为订单项、状态和商店实现子项,因此我可以添加一些特定于每个表单的特性。但是在那个地方我遇到了addNewItems方法 -的问题upsertMany,它显示了以下错误:

秋田似乎无法推断实体的类型。

就是那个问题。如何在不as any到处使用的情况下解决这个问题(如果我在最基础的级别开始这样做,我将在源代码中失去智能感知)?我是从.Net背景来到前端世界的。也许我不明白什么,这种架构模式在这里不是最好的?我需要一些建议。

0 投票
1 回答
173 浏览

angular - 带有选项卡的角度材质对话框 - 如果在对话框加载时切换选项卡,选项卡的内容不可见

我试图实现打开一个具有 2 个选项卡的选项卡组的对话框,并在对话框加载时立即切换到第二个选项卡。

问题是选项卡切换,但选项卡的内容不可见。它存在,但它不在视线范围内,在右边。我认为当我立即切换选项卡时不会发生将其移入视图的动画。

如果我切换回 Tab1,然后再次切换到 Tab2,我可以看到它的内容。

我正在使用秋田,并将 activeTabIndex 绑定到状态。

这是一个堆栈闪电战: https ://stackblitz.com/edit/angular-w8svt3

0 投票
0 回答
44 浏览

angular - 使用调度器对 Observables 进行排序

我在我的应用程序中对计算层进行排序时遇到问题。我正在使用 Akita 实体存储来管理状态,然后观察更改并通过可观察对象管道它们以生成 UI 状态。整体流程为:

(假设 distinctUntilChanged 在每个运算符之后)。

如何确保在任何组合之前计算 A..N?理想情况下,所有这些都在一个宏周期中,因此 UI 不会更新部分结果。

我尝试添加asapScheduler为 combineLatest 的最后一个参数,但它似乎不起作用,在调用 combineLatest 之前更新了一些输入,而在触发更多调用之后更新了一些输入。

我还希望能够添加另一个级别的组合:

如何确保 A..N 都在 Q..U 之前计算,同样,Q..U 在 W..Z 之前计算?

0 投票
0 回答
245 浏览

angular - 带有状态管理的 Angular - 如何在子组件中正确使用?

我使用不同的状态库和相同的方法制作了许多大型 Angular 应用程序:按“常识”划分大组件,例如路由器的“页面”,其中有一些子项,例如左侧的网格和右侧的编辑表单。像这样的每个组件都有零 @inputs 并直接从商店使用订阅。

但是现在我开始另一个应用程序并暂停考虑它 - 也许我制作了太多组件,也许它对性能有影响?

例如,我有一级 - 路由器延迟加载模块,该模块具有顶级“持有人”组件,顶部有工具栏和子页面链接,右上角应该有用户名和头像 - 带有用于注销等操作的菜单。

那么在性能方面什么是“正确”的方式:

  • 我的默认方式 - 我制作“用户菜单”组件并在其中使用状态选择器来获取名称和图像。
  • 或者使该组件“哑”并在父组件中读取状态并通过@Input传递,但是从顶层传入是正确的,将是输入的基调......

但也许它会更快......同时这个组件将只在一个地方使用 - 根本不需要它,但是顶级看起来很糟糕......

也许有人可以建议一些文档或文章,或者链接到一些具有真实世界规模的开源 Angular 应用程序,而不是像人们在 VSCode 中手动输入导入的 youtube 视频上的待办事项列表。

0 投票
1 回答
1044 浏览

angular - 使用秋田数据存储,如何选择所有基于 OR 的 2 个属性匹配的项目?

我想根据 2 个属性从秋田商店中选择值,其中任何一个都应该与我正在寻找的东西相匹配。

我从一个简单的开始(添加了 filterBy [] 知道我想要过滤不止一件事):

哪个正确返回与过滤器匹配的实体对象。但是,实体上有 2 个属性,其中任何一个都可能具有我要匹配的值。所以我猜了一下:

那里的第二个代码块不返回任何实体,第一个返回匹配一个 ok。

我想我可以做一个 SelectAll 然后使用 TS 过滤,

但我希望我可以在秋田选择框架内做一个 OR。

对秋田商店选择进行 OR 操作的正确语法是什么?我什至应该使用 select() 吗?

0 投票
1 回答
1038 浏览

angular - 为什么 Akita statestore 返回一个空实体而不是更新的实体?

我正在使用秋田作为我的 Angular 应用程序的状态存储。

我成功地从后端服务器获取数据并填充我的商店(数据显示在组件中)但是当我尝试更新商店中的实体时,它会发出一个空对象。

我怀疑这对我对秋田的理解很重要,但我希望调用以下内容

  1. 使用给定 ID 更新实体
  2. 使用更新的实体触发 myQuery.select(id).subscribe()

我也在服务中尝试过这种语法:

上面显示的订阅函数返回一个空对象。如果我在我的实体类中创建一个构造函数并设置几个默认值,那么在 query.select() 调用中只会返回构造函数中定义的那些属性。并且这些属性的值是默认值(在构造函数中定义)而不是存储中存在的值。

因此,以下一项或两项似乎是正确的:

  • 商店中的实体未更新
  • 秋田正在返回一个新构建的实体,而不是我所期望的(来自商店的更新实体)

希望一切都有意义....

一些代码:

服务:

我是打算将新构造的实体传递给 updateActive() 函数还是只是我想要更新的道具?

查询 - 当我在组件中调用 selectAll 时,这确实会返回有意义的数据:

从组件...

0 投票
1 回答
135 浏览

angular - 如何在 Akita 中声明查询/服务以便在另一个模块中使用它

我开始在我的离子应用程序中使用秋田。

我有一个SessionModule, 我在其中声明一个SessionService, SessionQuery, ... 但我想在我的app.component.ts.

我试图在我的SessionModule

我宣布它import在我的app.module.ts

并在我的 App.Component.ts 中使用它:

但是当我运行它时,我得到了一些错误:

我应该怎么办?是否必须仅在声明它的同一模块中使用查询?

0 投票
0 回答
194 浏览

angular - 使用 akita-ng-fire 时如何避免“this.fireAuth.auth.createUserWithEmailAndPassword 不是函数”

我刚刚按照大部分 akita-ng-fire 示例 + doc 在我的 ionic 项目中设置身份验证。

我已经安装了@angular/fire(6.0.2)、akita-ng-fire(1.5.13)、firebase(7.19.1)、angular lib(10.0.0)、ionic libs(5.0.0)。

这是我的模型:

这是我的查询:

这是我的商店:

这是我的服务:

我已经在我的 app.module 中设置了环境的 firebase + 初始化的 firebase。

但是,在我的应用程序中,我正在尝试调用该服务:

我在 chrome 开发工具中收到此错误:

我能错过什么?如何初始化身份验证?我到处找,但我找不到我错过的东西。

this.authService在调用它之前已经抛弃了它,我正在寻找一个fireAuth属性,但下面没有身份验证。是否存在某种不兼容?

0 投票
1 回答
285 浏览

angular - Angular2:获取从数组`|`中选择单个对象的管道

我在 Angular 中有一些复杂的 observable(感谢使用 Akita,我无法更改它),它是对象|数组、单个对象未定义的 'ed Observable:DinosaurDinosaur

作为一个可观察的,我想从中得到的是单个对象,或者是数组中的第一个对象,以防它是一个数组。或未定义,如果没有。

我认为一定有一些管道可以做到这一点,但我找不到合适的东西可以同时作用于|对象和该对象的数组。(或者也许它不能用管道完成,但以另一种方式,这也很好。)