RxJS:通过http从复杂的json中提取值数组

问题描述

角度10

(简体)

我有一个http get返回一个国家和该国家的州列表:

   {"id":1,"countryMeta": 
        {"statesList": 
             [
               {"name":"AB","value":"AB"},{"name":"CA","value":"CA"},]}
     }

我正在尝试从该对象获取状态列表,并将其放入NameValue数组中,但是我只得到1个状态,它不是数组。 switchMap不应该这样做吗?

    states$ = this.myHttpService.get().pipe(switchMap((x) => x.countryMeta.statesList));

然后消耗掉:

*ngFor="let state of states$ | async"

解决方法

我认为您需要map

import { map } from 'rxjs/operators';
states$ = this.myHttpService.get().pipe(map((x) => x.countryMeta.statesList));

switchMap切换到新的观测值,map转换当前的观测值。