尝试在 angular 中使用映射运算符转换对象(类型转换)

Try to transform object (type casting) using map operator in angular

Api 响应 (json) -

{
    "count": 1050,
    "next": "....",
    "previous": null,
    "results": [
        {
            "name": "Test1",
            "url": "https://test/1/"
        },
        {
            "name": "Test2",
            "url": "https://test/2/"
        }
     ]
}

接口:

export interface ITestModel{
  name: string;
  url: string;
}

服务:

getData(): Observable<ITestModel[]> {
    return this.http.get<ITestModel[]>(this.apiUrl).pipe(
      map((res) =>
        res.map((data) => ({
          name: data.name,
          url: data.url
        }))
      )
    );
  }

错误:(当我在控制器中订阅上述功能时)

core.js:4352 错误类型错误:res.map 不是 MapSubscriber.project 处的函数 (test.service.ts:19)

期望:

  1. 在 getData() 函数中,我想将 observable 转换为 ITestModel[]
  2. 订阅时的预期输出 (Json)

[ { “名称”:“测试1”, "url": "https:///test/1/" }, { "name": "测试2", "url": "https:///test/2/" } ]

谢谢!

试试这个:

getData(): Observable<ITestModel[]> {
    return this.http.get<any>(this.apiUrl).pipe(
      map((res) =>
        res.results.map((data) => {
          return { 
             name: data.name,
             url: data.url
           };
        });
      )
    );
  }