Angular observable 不过滤 json 数组结果

标签 angular http typescript rxjs observable

我是 TypeScript 和 Angular 的初学者,所以这个问题可能有些奇怪。 我有一个返回英雄列表的简单 JSON: http://demo8521374.mockable.io/titan

我需要我的服务来执行 GetById,但为什么 Hero 总是未定义,有人可以指点我正确的位置吗,这就是我正在做的:

        return this.http.get("http://demo8521374.mockable.io/titan").map((response: Response) => {
            var result = response.json().heroes as Hero[];
            console.log(result);
            return result;
        }).filter(x => x.filter(x => x.id == id)).first().toPromise();

在我的控制台中,我可以看到打印了数组,但在我的组件中没有获取对象:

    ngOnInit(): void {
        this.route.paramMap
            .switchMap((params: ParamMap) => this.heroService.getHero(+params.get('id')))
            .subscribe(hero => this.hero = hero);

        console.log(this.hero)
    }

谢谢!

最佳答案

按如下方式修改代码并且它有效,当然还有更好的方法:

    getHero(id: number): Promise<Hero> {

        return  this.http.get("http://demo8521374.mockable.io/titan").map((response: Response) => {
            var result = response.json().heroes as Hero[];
            console.log(result);
            return result;
        })

            .map(heros => {
                let y = heros.filter(x => x.id == id)[0]
                console.log(y);
                return y;
            })
            .toPromise();

关于Angular observable 不过滤 json 数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46668829/

相关文章:

css - 如何在 Ionic 2 中添加带有图像名称的图像

Angular - 获取格式,作为字符串,用于根据语言环境显示日期

javascript - GOJS 链接渲染不正确,在用户移动节点时纠正

typescript - 视觉 : Typed props interface with optional properties

angular - 使用 Electron 的 Angular 2 应用程序中的 Node require()

angular - ng-bullet vs karma-parallel vs 在所有之前配置测试模块 - Angular 单元测试性能改进

http - JMeter 给出的响应消息为 "Non HTTP response code: java.net.SocketException/Non HTTP response message: Connection reset"

http - 您可以在 Google+ html 源中看到的那些以//- 开头的网址是什么?

javascript - 如何查询XMLHttpRequest的方法类型?

oracle - 如何将此 oracle 查询转换为 typeorm?