问题标签 [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 - 复杂的可观察链异步只订阅一次
我有一些复杂的可观察对象链,打算填充 2 个不同的存储(如果为 null),并使用填充的对象创建第三个对象并将其输入模板 | 异步的。
我怀疑我的一个 observables 即将过期,因为当我编辑数据并更新我的商店时,数据并没有反映为已更新。
可观察的链有点像这样:查询存储名册 > 没有名册?> API 调用来填充商店 > 名册?> 清单查询商店 > 没有清单?> API 调用填充商店 > 清单?> 将名册和清单组成注册表 > 模板作为注册表$ | 异步
名册.component.ts:
名册.query.ts:
manifest.query.ts:
名册.service.ts:
api.service.ts:
我 90% 确定问题出在我如何编写 this.route.params 的订阅,因为我在另一个使用相同数据的区域中没有看到相同的问题(但没有编辑所以它没有't 链接路由并存储 observables)
编辑:奇怪。删除 observable 组合以支持超时同步调用(以测试事物)并没有改变行为:
它仍然可以在标头中使用,我订阅了路由服务(而不是使用激活路由),但该路由服务似乎在路由器插座中不起作用。
angular - 使用秋田状态库向嵌套数组添加对象 - Angular 9
我的秋田商店中有下一个实体结构:
我正在尝试将另一个对象添加到特定值的数据数组中,例如我想添加{dataId: 1.5, text: 'dfg}
到值的数据中valueId: 1.1
。所以结果应该是这样的:
我试图做下一件事,但没有奏效:
任何帮助,将不胜感激
angular - Angular 使用 Akita 商店 ngOnInit 在首次加载时不起作用
我的 Angular10 应用程序使用 Akita 商店时遇到问题。
当我在我的组件页面上启动/刷新我的应用程序时,我在我的组件上看到 LOADING。
但是,通过控制台,看起来商店已经加载了项目,并且我的 console.logs 在 onInit 中被触发。
当我在他们应该加载的页面上刷新应用程序时,它不会,它只会显示“正在加载”。但是,如果我单击此页面的路由器链接按钮,它将加载。
/models/post post.model.ts
/stores/post post.store.ts
/stores/user user.query.ts
服务/帖子posts.service.ts
视觉/视觉.component.ts
视觉/视觉.component.html
angular - 我应该如何使用秋田商店构建我的 Angular 服务?
我正在使用 Akita 实体数据存储在 Angular 应用程序的前端缓存数据。
在我的服务中,我有一些类似这样的功能:
现在,可以理解的是,当实体在商店中更新时,Akita 商店会触发大量事件(属性被设置,保存后更新)。
我觉得我想在保存后更新商店,以防服务器端逻辑对实体产生副作用(在这种情况下确实会发生)。
像这样保持 FE/BE 同步的秋田方式是什么?
我想我可以从商店中获取实体,为其设置值,然后调用 save 函数,但这似乎与 Akita 使用 store.update() 更新对象属性的方式相反。
当 Akita 从它的 getEntity() 函数中重新调整不可变对象时,我最终得到了一些感觉不对的东西(assign(),不使用 akita 内置 store.update())......
rxjs - Akita 和 Rxjs 的 Angular 在外部 observable 内部存在 foreach 问题
我是秋田的 Angular 新手。
我有一个应用程序,用户在其中加载并设置在商店中。所有用户都有一个初始 imageUrl 属性设置为例如:'http://testxxxxxx' 该组件查询所有用户的商店,并通过管道调用一个循环遍历每个人的方法,进行 api 调用以获取“blob”图像响应从 api,并使用人员的 imageUrl = 'blob:http:2fk2fjadkf' 和组件设置 <img src='imageUrl' 更新商店。
但是由于某种原因,外部 observable 内部的方法循环了很多次。不知道为什么。
这是我的代码:
零件:
Component.html 使用 peopleToShow$ 和每个人的 imageUrl 属性。现在它没有采用在 this.loadImagesAsBlobs 中设置的更新的 blob url
正面:
谢谢
angular - 为什么代码覆盖率报告中不包含 rxjs pipe() 运算符?
问题
rxjsmap()
未包含在伊斯坦布尔代码覆盖率报告中,尽管正在测试这些行。与此相关的其他问题包括 http-testing,这与此无关。我需要找到一种方法来测试管道或pipe()
从覆盖率报告中排除语句。
描述
我有一个秋田实体商店和车辆查询。根据某些设置,车辆可以使用(frontendLocation
如果存在)或CurrentLocation
(命名不由我决定)。
vehicle.query.ts
在我的规范文件中,我设置了一个带有 frontendLocation 的活动车辆并测试查询:
- 获取车辆的前端位置(如果存在)
- 如果 frontendLocation 不存在,则获取车辆的 CurrentLocation。
这涵盖了查询location$
管道内的两个选项。两个测试都通过了,但map()
查询的第 4 行仍然显示为未覆盖。
angular - 保存过滤器属性时,秋田有什么更好的性能?
语境
我是Akita的新手,但我已经实现了一个会话存储。
现在我必须将一堆聊天对象存储到一个商店中,我想到了这个结构:
在哪里:
- selectedChatId是 UI 中显示的聊天窗口(全局状态)。
- typingId是在聊天中输入的用户的 ID(商店中每个聊天的本地状态)。
- lastMessageId和draftMessageId也是每个聊天的本地状态。
问题
我也想保存一个减少聊天 ID 的列表。每个聊天都可以减少,以便在屏幕上最小化(也可以扩展)。所以这也是本地聊天状态。
我想检索减少的聊天列表,那么效率会更高吗?(我被迫使用Akita v4,所以我不能filterBy
使用selectAll
)
- 存储一个新的 ChatUI 本地属性并创建一个查询来过滤与该属性的聊天
- 使用一组 id ( ) 存储 ChatState ui 全局属性,
Set<string>
然后访问存储以查找这些对象。- 医生说:
在 store 中只存储普通对象,避免存储 Map 或 Set
- 创建一个新商店以保存/删除减少的聊天。
- 我不喜欢这样,我认为重复数据是一种反模式
谢谢大家
angular - 禁用以不可变数据存储为数据源的 AG Grid 的客户端排序
我正在将 AG Grid 与 Angular 和一个不可变存储(秋田)一起使用。我设法连接了 AG Grid 和秋田商店,但我仍然对如何基本上停用 AG Grid 的内置排序(不会丢失列标题中的排序功能)并做出反应sortChanged
以便然后更新感到困惑秋田商店(然后更新 AG Grid)。
angular - Angular:akitaConfig 的放置位置
我已经尝试akitaConfig
直接放置在我的文件的构造函数中app.component.ts
,它在其他任何东西之前被调用,但它似乎没有正确配置之后创建的数据存储。我正在尝试设置resettable
为true
全局。我发现这样做的唯一方法是将其设置在每个单独的商店中,这并不理想。
TIA。
angular - 秋田查询 this.selectAll 在服务调用完成之前返回空列表
这是我的 widgetquery.ts
在前端我使用 *ngIf 像这样:
我组件中的构造函数调用此函数,从服务调用中获取小部件(服务调用成功...)
[ ]
但是 selectAll 查询在返回真实数据之前返回一个空列表[ widget1, widget2 ]
。
所以我得到一个空列表,然后是真实数据(填充列表)。
我不想要首先出现的空列表(即使真实数据有时可能是空列表)......
为什么我从秋田得到第一个空列表?
我可以使用某种“标志”或“初始化状态”来告诉秋田:在我的服务调用完成之前不要从查询中返回数据,并通过此行将数据添加到存储中this.WidgetStore.add(liste);
?