地图不是函数rxjs angular

bleau83

我是RXJS的新手,正在努力使以下代码正常工作。在角度,我正在调用REST API,其余的API返回一个数组。我只需要模型中来自API的某些数据。我正在尝试使用RXJS(所以没有forEach,...),这就是我到目前为止的事情:

import { Injectable, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { DataPackage } from './models/data-package';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class PackageService implements OnInit{

  constructor(private http: HttpClient) { }

  getPackages(): Observable<DataPackage> {
    return this.http
    .get<any>('http://dummy.restapiexample.com/api/v1/employees')
    .pipe(
      map((data: any[]) =>
        data.map(
          (response: any) =>
            new DataPackage(response.employee_name, response.employee_salary, response.employee_age, new Date())
        )
      )
    );
  }

  ngOnInit() {      

  }
}

我收到以下错误

ERROR TypeError: "data.map is not a function"
    getPackages package.service.ts:19
库尔特·汉密尔顿

您的模拟API在以下结构中返回响应:

{
  "status": "success",
  "data": [
    { /.../ }
  ]
}

因此,您正在尝试调用.map此对象。相反,您想导航到该data属性。有两种方法可以做到这一点,但我将使其保持简单。

getPackages(): Observable<DataPackage[]> {
  return this.http
    .get<any>('http://dummy.restapiexample.com/api/v1/employees')
    .pipe(
      map((response: any) => response.data // <--- navigate to "data"
        .map((item: any) => this.mapResponseItem(item))            
    );
}

private mapResponseItem(item): DataPackage {
  return new DataPackage(response.employee_name, 
    response.employee_salary, response.employee_age, new Date());
}

编辑:我将内部地图移出了订阅,希望使.data导航更加清晰。另外,您应该返回DataPackagefrom的数组getPackages

另类

您可以pluck在管道中使用运算符,以确保将数组放入mapRxJS运算符。

getPackages(): Observable<DataPackage[]> {
  return this.http
    .get<any>('http://dummy.restapiexample.com/api/v1/employees')
    .pipe(
      pluck('data'), // <-- pass "data" on to map
      map((data: any) => data.map(item => this.mapResponseItem(item))            
    );
}

private mapResponseItem(item): DataPackage {
  return new DataPackage(response.employee_name, 
    response.employee_salary, response.employee_age, new Date());
}

无论您使用哪种方法,仅取决于您的口味。这两种方法都不是类型安全的,因为您要处理进入系统的外部数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular2 RxJS从地图函数调用类函数

来自分类Dev

Angular js .then不是函数

来自分类Dev

订阅不是 Angular 的函数

来自分类Dev

使用RXJS和angular获取地图值

来自分类Dev

Angular2 RxJS收到“ Observable_1.Observable.fromEvent不是函数”错误

来自分类Dev

带有RXJS Observable TypeError的Angular2 Http:this.http.get(...)。map(...)。catch不是函数

来自分类Dev

带有RXJS Observable TypeError的Angular2 Http:this.http.get(...)。map(...)。catch不是函数

来自分类Dev

Angular - rxjs_Observable__WEBPACK_IMPORTED_MODULE_2__.Observable.of 不是一个函数

来自分类Dev

Angular Universal RxJs“Observable_1.Observable.throw 不是一个函数”

来自分类Dev

类型错误:observable.of 不是函数 - [email protected] - [email protected] - angular5

来自分类Dev

angular.factory不是函数

来自分类Dev

Angular Recorder不是构造函数

来自分类Dev

TypeError:undefined不是函数Angular

来自分类Dev

Angular Ngresouce $ update不是函数

来自分类Dev

错误:不是函数-Angular服务

来自分类Dev

如何从Angular中的RXJS测试地图并点击管道

来自分类Dev

Angular 8 中的 Rxjs ~6.4.0. 地图问题

来自分类Dev

Angular JS TypeError:f不是函数

来自分类Dev

TypeError:angular.element.cleanData不是函数

来自分类Dev

Angular-TypeError:XX不是函数

来自分类Dev

Angular js工厂调用“不是函数”

来自分类Dev

Angular ES6-$ inject不是函数

来自分类Dev

element.sortable不是函数Angular

来自分类Dev

service.foo不是Angular函数

来自分类Dev

angular ssr mod.require不是函数

来自分类Dev

Angular 10 npm错误hasBindingPropertyName不是函数

来自分类Dev

this.debug不是Angular Universal的函数

来自分类Dev

Angular JS工厂调用“不是函数”

来自分类Dev

Angular ngResource“ CartResource.get不是函数!”

Related 相关文章

  1. 1

    Angular2 RxJS从地图函数调用类函数

  2. 2

    Angular js .then不是函数

  3. 3

    订阅不是 Angular 的函数

  4. 4

    使用RXJS和angular获取地图值

  5. 5

    Angular2 RxJS收到“ Observable_1.Observable.fromEvent不是函数”错误

  6. 6

    带有RXJS Observable TypeError的Angular2 Http:this.http.get(...)。map(...)。catch不是函数

  7. 7

    带有RXJS Observable TypeError的Angular2 Http:this.http.get(...)。map(...)。catch不是函数

  8. 8

    Angular - rxjs_Observable__WEBPACK_IMPORTED_MODULE_2__.Observable.of 不是一个函数

  9. 9

    Angular Universal RxJs“Observable_1.Observable.throw 不是一个函数”

  10. 10

    类型错误:observable.of 不是函数 - [email protected] - [email protected] - angular5

  11. 11

    angular.factory不是函数

  12. 12

    Angular Recorder不是构造函数

  13. 13

    TypeError:undefined不是函数Angular

  14. 14

    Angular Ngresouce $ update不是函数

  15. 15

    错误:不是函数-Angular服务

  16. 16

    如何从Angular中的RXJS测试地图并点击管道

  17. 17

    Angular 8 中的 Rxjs ~6.4.0. 地图问题

  18. 18

    Angular JS TypeError:f不是函数

  19. 19

    TypeError:angular.element.cleanData不是函数

  20. 20

    Angular-TypeError:XX不是函数

  21. 21

    Angular js工厂调用“不是函数”

  22. 22

    Angular ES6-$ inject不是函数

  23. 23

    element.sortable不是函数Angular

  24. 24

    service.foo不是Angular函数

  25. 25

    angular ssr mod.require不是函数

  26. 26

    Angular 10 npm错误hasBindingPropertyName不是函数

  27. 27

    this.debug不是Angular Universal的函数

  28. 28

    Angular JS工厂调用“不是函数”

  29. 29

    Angular ngResource“ CartResource.get不是函数!”

热门标签

归档