Фильтрация наблюдаемого типизированного массива по значению свойства - PullRequest
0 голосов
/ 26 октября 2018

У меня есть проблема, над которой я работаю уже пару недель, но для таких, как я, я не могу разобраться.Я не могу положить это решение в стек блиц из-за того, как оно настроено.Я собираюсь дать как можно больше деталей и фрагментов кода в надежде, что кто-нибудь может помочь мне устранить этот блокпост.У меня есть селектор, который я пытаюсь создать, который фильтрует все элементы этого типа:

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));

Первая проблема, с которой я столкнулся: не имеет значениякак я набираю вещи и как передать вещи, которые он хочет, чтобы вернуть массив Feature внутри нетипизированного массива.Я не мог заставить его просто отправить массив функций.В конечном счете, я получил его для вывода, выполнив для него либо mergeAll, либо concatAll, но когда я пытаюсь его отфильтровать, он говорит мне, что фильтр недоступен для этого.Это возвращает массив, как и должно без операторов map / filter.Я пытаюсь заставить это фильтровать, но в конечном счете хочу это в селекторе.Я был бы очень признателен за любую помощь о том, как лучше заставить селектор работать на этом

...