首页 > 解决方案 > 如何使用解析器获取模型对象数组?

问题描述

我使用解析器从服务器获取数据

import {Resolve, ActivatedRoute} from "@angular/router";
import {Observable} from "rxjs";
import {RouterStateSnapshot} from "@angular/router";
import {ActivatedRouteSnapshot} from "@angular/router";
import {Injectable} from "@angular/core";
import {HttpClient, HttpRequest} from "@angular/common/http";
import {Town} from "../_models/town";

@Injectable()
export class TownsListResolver implements Resolve<any>{

	constructor(private http: HttpClient,private activatedRoute: ActivatedRoute) {
	}

	resolve(route:ActivatedRouteSnapshot, state:RouterStateSnapshot):Observable<Town[]> {
		return this.http.get('/api/towns');
	}
}

我不会像这样转换对象数组:

data['towns']['models'].forEach((item) => {
            this.townsList.push(item);
        });

我应该使用哪些 rxJs 或基本角度函数来解决我的问题?

标签: angular

解决方案


我会简单地执行以下操作:

resolve(route:ActivatedRouteSnapshot, state:RouterStateSnapshot):Observable<Town[]> {
    return this.http.get('/api/towns').pipe(
        map(p => p['towns']['models'])
    );
}

这样,你就可以继续暴露 Observable。


推荐阅读