Angular ngrx和Resolver。通过属性值从可观察数组中查找Observable对象

时间:2018-03-12 03:37:35

标签: angular typescript observable ngrx

我有一个需要从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[]>

0 个答案:

没有答案