我有一个问题已经解决了两个星期,对于像我这样的人,我不知道。由于配置方式的原因,我无法将此解决方案放入堆栈闪电战中。我将提供尽可能多的详细信息和代码段,以希望有人可以帮助我消除此障碍。我有一个尝试创建的选择器,用于过滤此类型的所有项目:
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运算符的数组。我试图让它进行过滤,但最终希望在选择器中使用它。我将非常感谢您提供有关如何最好地使用选择器的帮助