angular - ngrx-data, getWithQuery() loaded$ observable 即使加载了数据也不会发出布尔值“true”
问题描述
通过ngrx实现路由器解析器时遇到问题。我希望在将数据加载到 entityCache 时解析路由器。奇怪的行为是我可以清楚地看到数据是通过 Chrome Devtools (Redux) 加载到 entityCache 中的。即使 loading$ 标志(可观察)正常工作,loaded$ 标志首先会按预期发出false ,但在将数据加载到存储时不会发出true 。有变通的解决方案,但我不知道是否有任何内置的解决方案。
.
.
.
@Injectable()
export class BusDetailResolver implements Resolve<boolean>{
constructor(
...,
private busDetailEntityService:BusDetailEntityService,
){}
private accessToken = '';
....
resolve(route:ActivatedRouteSnapshot, state:RouterStateSnapshot):Observable<boolean>{
return this.busDetailEntityService.loaded$
.pipe(
tap(x => console.log(x)),
tap(loaded => {
if(!loaded && this.accessToken != ''){
let queryParams:QueryParams =
{
routeCode: "exampleRCode",
direction: "exampleDirection"
};
this.busDetailEntityService.getWithQuery(queryParams);
}
}),
filter(loaded => !!loaded),
first(),
);
}
}
当我订阅某个组件(没有实现路由器解析器)时,像这样订阅相同的服务:
this.busDetailEntityService.getWithQuery(packet).subscribe(val => {
console.log('data loaded:', val)
})
我可以清楚地看到数据已加载。在任何情况下,loaded$ 标志都不会触发为真。
- 加载前
- 加载后
(如您所见 loading$ 有效,loaded$ 无效)
解决方案
推荐阅读
- mpi - UCX 警告意外标签接收
- memory - 是否可以通过覆盖 PFN_vkAllocationFunction 并将回调传递给 Vulkan 函数来分配主机内存
- go - 使用 protoc-gen-grpc-gateway 生成的代码出错
- r - 尝试在 PCA 的 PC 上进行方差分析,但收到错误消息
- robotframework - Robot Framework 日志 - 如何在拆解中修改 output.xml?
- spring - 如何将额外的 url 添加到主数据源(复制保留数据库的 url)以在运行时动态切换?
- r - 对 N 个正态分布求和
- java - Android Studio:如何将阿拉伯日期格式转换为英文?
- tensorflow - 谷歌云“无法为 TPU 实例创建没有基础映像的 Compute Engine 实例”
- javascript - react JS中的回调函数