问题标签 [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.
angular - 如何使用角度将对象添加到包含 Array 的现有动态秋田商店
我在秋田商店中存储动态值而不创建模型。
我正在尝试将对象从存储添加到现有数组,我是秋田新手,所以尝试深度克隆秋田存储值,然后将该对象推送到数组并将更改后的数组再次设置为存储,但它正在重复存储中的值
angular - 用秋田实现基本抽象状态的适当方法
我试图实现这样的事情,我有点困惑。假设我需要实现各种基于网格的页面,它们的设计方式或多或少相同,但它们每个都有一些特殊性。这就是为什么我需要一些基本的抽象存储/查询服务,我打算在这些服务中实现通用逻辑。
每个网格都将使用以下子级进行操作BaseLineItem
:
那就是我尝试实现它的方式
假设对于每个表单,我将为订单项、状态和商店实现子项,因此我可以添加一些特定于每个表单的特性。但是在那个地方我遇到了addNewItems
方法 -的问题upsertMany
,它显示了以下错误:
秋田似乎无法推断实体的类型。
就是那个问题。如何在不as any
到处使用的情况下解决这个问题(如果我在最基础的级别开始这样做,我将在源代码中失去智能感知)?我是从.Net背景来到前端世界的。也许我不明白什么,这种架构模式在这里不是最好的?我需要一些建议。
angular - 带有选项卡的角度材质对话框 - 如果在对话框加载时切换选项卡,选项卡的内容不可见
我试图实现打开一个具有 2 个选项卡的选项卡组的对话框,并在对话框加载时立即切换到第二个选项卡。
问题是选项卡切换,但选项卡的内容不可见。它存在,但它不在视线范围内,在右边。我认为当我立即切换选项卡时不会发生将其移入视图的动画。
如果我切换回 Tab1,然后再次切换到 Tab2,我可以看到它的内容。
我正在使用秋田,并将 activeTabIndex 绑定到状态。
这是一个堆栈闪电战: https ://stackblitz.com/edit/angular-w8svt3
angular - 使用调度器对 Observables 进行排序
我在我的应用程序中对计算层进行排序时遇到问题。我正在使用 Akita 实体存储来管理状态,然后观察更改并通过可观察对象管道它们以生成 UI 状态。整体流程为:
(假设 distinctUntilChanged 在每个运算符之后)。
如何确保在任何组合之前计算 A..N?理想情况下,所有这些都在一个宏周期中,因此 UI 不会更新部分结果。
我尝试添加asapScheduler
为 combineLatest 的最后一个参数,但它似乎不起作用,在调用 combineLatest 之前更新了一些输入,而在触发更多调用之后更新了一些输入。
我还希望能够添加另一个级别的组合:
如何确保 A..N 都在 Q..U 之前计算,同样,Q..U 在 W..Z 之前计算?
angular - 带有状态管理的 Angular - 如何在子组件中正确使用?
我使用不同的状态库和相同的方法制作了许多大型 Angular 应用程序:按“常识”划分大组件,例如路由器的“页面”,其中有一些子项,例如左侧的网格和右侧的编辑表单。像这样的每个组件都有零 @inputs 并直接从商店使用订阅。
但是现在我开始另一个应用程序并暂停考虑它 - 也许我制作了太多组件,也许它对性能有影响?
例如,我有一级 - 路由器延迟加载模块,该模块具有顶级“持有人”组件,顶部有工具栏和子页面链接,右上角应该有用户名和头像 - 带有用于注销等操作的菜单。
那么在性能方面什么是“正确”的方式:
- 我的默认方式 - 我制作“用户菜单”组件并在其中使用状态选择器来获取名称和图像。
- 或者使该组件“哑”并在父组件中读取状态并通过@Input传递,但是从顶层传入是正确的,将是输入的基调......
但也许它会更快......同时这个组件将只在一个地方使用 - 根本不需要它,但是顶级看起来很糟糕......
也许有人可以建议一些文档或文章,或者链接到一些具有真实世界规模的开源 Angular 应用程序,而不是像人们在 VSCode 中手动输入导入的 youtube 视频上的待办事项列表。
angular - 使用秋田数据存储,如何选择所有基于 OR 的 2 个属性匹配的项目?
我想根据 2 个属性从秋田商店中选择值,其中任何一个都应该与我正在寻找的东西相匹配。
我从一个简单的开始(添加了 filterBy [] 知道我想要过滤不止一件事):
哪个正确返回与过滤器匹配的实体对象。但是,实体上有 2 个属性,其中任何一个都可能具有我要匹配的值。所以我猜了一下:
那里的第二个代码块不返回任何实体,第一个返回匹配一个 ok。
我想我可以做一个 SelectAll 然后使用 TS 过滤,
但我希望我可以在秋田选择框架内做一个 OR。
对秋田商店选择进行 OR 操作的正确语法是什么?我什至应该使用 select() 吗?
angular - 为什么 Akita statestore 返回一个空实体而不是更新的实体?
我正在使用秋田作为我的 Angular 应用程序的状态存储。
我成功地从后端服务器获取数据并填充我的商店(数据显示在组件中)但是当我尝试更新商店中的实体时,它会发出一个空对象。
我怀疑这对我对秋田的理解很重要,但我希望调用以下内容
- 使用给定 ID 更新实体
- 使用更新的实体触发 myQuery.select(id).subscribe()
我也在服务中尝试过这种语法:
上面显示的订阅函数返回一个空对象。如果我在我的实体类中创建一个构造函数并设置几个默认值,那么在 query.select() 调用中只会返回构造函数中定义的那些属性。并且这些属性的值是默认值(在构造函数中定义)而不是存储中存在的值。
因此,以下一项或两项似乎是正确的:
- 商店中的实体未更新
- 秋田正在返回一个新构建的实体,而不是我所期望的(来自商店的更新实体)
希望一切都有意义....
一些代码:
服务:
我是打算将新构造的实体传递给 updateActive() 函数还是只是我想要更新的道具?
查询 - 当我在组件中调用 selectAll 时,这确实会返回有意义的数据:
从组件...
angular - 如何在 Akita 中声明查询/服务以便在另一个模块中使用它
我开始在我的离子应用程序中使用秋田。
我有一个SessionModule
, 我在其中声明一个SessionService
, SessionQuery
, ... 但我想在我的app.component.ts
.
我试图在我的SessionModule
:
我宣布它import
在我的app.module.ts
并在我的 App.Component.ts 中使用它:
但是当我运行它时,我得到了一些错误:
我应该怎么办?是否必须仅在声明它的同一模块中使用查询?
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
属性,但下面没有身份验证。是否存在某种不兼容?
angular - Angular2:获取从数组`|`中选择单个对象的管道
我在 Angular 中有一些复杂的 observable(感谢使用 Akita,我无法更改它),它是对象|
数组、单个对象或未定义的 'ed Observable:Dinosaur
Dinosaur
作为一个可观察的,我想从中得到的是单个对象,或者是数组中的第一个对象,以防它是一个数组。或未定义,如果没有。
我认为一定有一些管道可以做到这一点,但我找不到合适的东西可以同时作用于|
对象和该对象的数组。(或者也许它不能用管道完成,但以另一种方式,这也很好。)