根据属性值过滤可观察类型数组

时间:2018-10-26 13:52:05

标签: arrays rxjs ngrx

我有一个问题已经解决了两个星期,对于像我这样的人,我不知道。由于配置方式的原因,我无法将此解决方案放入堆栈闪电战中。我将提供尽可能多的详细信息和代码段,以希望有人可以帮助我消除此障碍。我有一个尝试创建的选择器,用于过滤此类型的所有项目:

export class Feature {
  type: string;
  geometry?: Geometry;
  properties: Properties;
}
export class Properties {
  _hg_id: string;
  _hg_geometry: string;
  id?: string;
  hgResource?: string;
  location?: string;
  _hg_layer: string;
}

我正在尝试基于过滤一系列功能

properties._hg_layer ='值' 从服务中返回的响应是json对象,在这里我从对象中获取一个子数组,并将其传递给我的效果,然后传递到商店中:

return this.http.post<Feature[]>(BASE_URL + '/view', httpBody, HEADER)
    .pipe(
        map((response: Feature[]) => (response['themes'][0]['layers'][0]['features'])
  ));

@Effect()
updateLayerData$: Observable<Action> = this.actions$.pipe(
ofType(ClientConfigActionTypes.UpdateLayerData),
switchMap(() => this.mapService.getMapViewData(BBOX, featureLayers)
 .pipe(
    map((features: Feature[]) => new    UpdateLayerDataSuccess(features))
      ))); 

this.updatedLayers$.pipe(
            withLatestFrom(),
            take(10),
            mergeAll(),
             map((val: Feature[]) => val.filter(f => f.properties._hg_layer === 'air15_8')))
 .subscribe(val => console.log('features 2 mergeAll', val));

我遇到的第一个问题:无论我如何键入事物以及如何传递事物,它都希望在无类型数组中返回Features数组。我不能仅仅发送一系列功能。最终,我通过对它执行mergeAll或concatAll将其输出,但是当我尝试对其进行过滤时,它告诉我该过滤器不可用。这将返回不包含map / filter运算符的数组。我试图让它进行过滤,但最终希望在选择器中使用它。我将非常感谢您提供有关如何最好地使用选择器的帮助

0 个答案:

没有答案