mau*_*844 3 ngrx angular angular-ngrx-data
我正在使用 ngrx-data 插件(在 ngrx 之上运行),并且我试图从商店中选择一个实体(ngrx 数据调用“缓存”)。我发现您可以将单个实体添加到缓存中,但我找不到从商店中检索单个项目(基于 Id)的方法。
我必须为此编写自己的选择器吗?我假设 ngrx-data 会提供这样一个简单的操作
小智 7
我确信有一种更优雅的方法可以做到这一点,但我能够通过使用数据服务上的 collection$ 属性来获取单个实体。
例如,我有一个名为 Core 的实体和一个名为 CoreEntityService 的 EntityService。我的实体缓存已通过 coreEntityService.getByKey(id) 填充。或者我可以通过 getAll() 填充实体缓存。
当我想检索具有该 id 的核心时,我使用此构造,此处通过将单个实体记录到控制台来说明:
this.coreEntityService.collection$.subscribe(collection => console.log(collection.entities[id]))
编辑添加:
您还可以订阅实体服务的 entityMap$。我向我的实体服务添加了一个名为 selectEntityById 的方法,该方法运行良好并返回一个可观察对象,这与之前的代码不同,它返回一个实际对象:
selectEntityById(coreId: number): Observable<Core> {
return this.entityMap$.pipe(
map(entities => entities[coreId]),
first());
}
Run Code Online (Sandbox Code Playgroud)
ngrx/data 的文档目前不是很好,但正在改进。我希望有人能尽快对这个问题发表更好的答案。
| 归档时间: |
|
| 查看次数: |
2643 次 |
| 最近记录: |