我有一个需要从api服务返回组织详细信息的解析器。与此同时,我们使用ngrx来存储所有组织的详细信息。
我希望我的解析器能够查看ngrx商店: - 如果组织列表为空,则将其填入组织列表中 - 从ngrx商店中找到具有特定ID的组织并将其返回。
我现在尝试这样做的方式:
resolve(route: ActivatedRouteSnapshot): Observable<Organization> {
const organizationId = route.paramMap.get(RouterHelperService.urlParam.organizationId);
this.initOrganizationsData();
const company = this.store.select(store => store.companies)
.filter(state => state && state.length > 0 && state.filter(c => c.id === organizationId).length > 0)
.take(1)[0];
return company;
}
这是方法initOrganizationsData():
private initOrganizationsData(): void {
this.store.take(1).subscribe(store => {
if (store.companies.length === 0) {
this.organizationService.getOrganizations().subscribe(data => {
this.store.dispatch(new companyActions.LoadCompaniesSuccessAction(data));
});
}
});
}
目前我总是得到结果公司未定义。
任何人都可以指出我正确的方向。怎么了?如何从Observable<Organization>
获取具有特定价值的Observable<Organization[]>
?