首页 > 解决方案 > 无法从 Angular 中的 GET 请求中获取数据

问题描述

语境

Angular 8 应用程序请求外部 Web api。

GET请求结果是这样的:

{
"data": [
    {
        "name": "QWERTY",
        "isValid": false
    }]
}

我在我的服务中使用这个 TypeScript 代码调用 api:

private categoryUrl = 'http://localhost:8081/api/categories?OrderBy=';

return this.http.get<ICategory[]>(this.categoryUrl + prop )
    .pipe(
        tap(data => console.log(JSON.stringify(data)))
        ,map(item=>item.data)
);
}

我的问题

这行代码不编译声明:

错误 TS2339:“ICategory[]”类型上不存在属性“数据”

如果我注释map()行并运行它正在编译并且 Web 应用程序启动,但 html 模板上没有显示任何数据。

如果那时我没有停止就取消注释,应用程序重新编译,发送相同的错误消息。但是请求已正确完成,我可以在模板上看到我的结果。

我的问题

  1. 我该如何解释呢?
  2. 做这项工作的正确方法是什么?

谢谢

标签: angular

解决方案


您可能只是收到类型检查错误。类中的属性是什么ICategory

当您这样做this.http.get<ICategory[]>时,HTTP 响应预计将遵循ICategory. 检查是否data是 中的属性ICategory,并进行相应修改。


如果ICategory应该是数组“数据”中的实际数据。您可以省略 Generic 类型或为其使用正确的接口:this.http.get<{ data: ICategory[]}>


推荐阅读