Angular:Http 到 HttpClient 的转换问题

标签 angular typescript http service observable

我正在我的旧 Angular 应用程序中进行从 Http 到 HttpClient 的转换。但是,在处理 service.ts 部分期间,我无法解决以下错误:

ERROR Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

组件.ts

import { Component, OnInit } from "@angular/core";
import { Rider } from "../interfaces/rider";
import { SpeedwayService } from "../../speedway.service";
import { OrderPipe } from "ngx-order-pipe";

@Component({
  selector: "gs-pgee2020",
  templateUrl: "./pgee2020.component.html",
  styleUrls: ["./pgee2020.component.less"]
})
export class Pgee2020Component {
  pgee2020: Array<any>;
  order: string = "MSC";
  reverse: boolean = false;
  result: number[];
  constructor(
    private _speedwayService: SpeedwayService,
    private orderPipe: OrderPipe
  ) {
    this._speedwayService.getPgee2020().subscribe(response => {
      this.pgee2020 = orderPipe.transform(response, "MSC");
    });
  }

  setOrder(value: string) {
    if (this.order === value) {
      this.reverse = !this.reverse;
    }
    this.order = value;
  }
}

service.ts(旧的,使用 Http)

getPgee2020() {
    return this._http
      .get("http://node.gurustats.usermd.net:60519/pgee2020")
      .map(result => (this.result = result.json().data));
  }

service.ts(新的,不适用于 HttpClient)

getPgee2020() {
    return this._http
      .get("http://node.gurustats.usermd.net:60519/pgee2020").pipe(map((result => (this.result = result))));
    }

数据结构

{
  "status": 200,
  "message": null,
  "data": [
    {
      "_id": "604a882ed87fdb0482536fc9",
      "MSC": 3,
      "ZAWODNIK": "Bartosz Zmarzlik",
      "KLUB": "Gorzów",
      "SREDNIA": 2.43,

组件.html

 <tr
            *ngFor="
              let rider of pgee2020 | orderBy: order:reverse;
              let i = index" class="row-zaw"
            [routerLink]="[rider.id]">
          
            <td>{{ rider.MSC }}</td>
            <td>{{ rider.ZAWODNIK }}</td>
            <td>{{ rider.KLUB }}</td>
...

最佳答案

看起来您需要迭代 pgee2020data 属性,而不是整个对象本身,这就是您的模板中断的原因。后者是一个对象,您无法使用现有代码对其进行迭代。

进行以下更改:

<tr *ngFor="let rider of pgee2020.data"> 
   .... 
</tr>

关于Angular:Http 到 HttpClient 的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66615051/

相关文章:

node.js - 错误!代码 ERESOLVE npm ERR! ERESOLVE 无法解析 npm ERR!在解析 : @nestjs/mongoose@8. 0.1 时

angularjs - TypeScript + Angular 1 + 过滤器 : Assigning types

http - 由于 '_InternalLinkedHashMap<String, dynamic>'不是 'Iterable<dynamic>'类型的子类型,反序列化失败

php - PHP 中的 HTTP POST 请求

java - 在 java : Files corrupted 中通过 HTTP post 接收文件

javascript - 如何扩展 Date 类

python - 一个文件启动所有服务... mongodb、redis、node、angular 和 python

angular - 无法绑定(bind)到 'ngModelOptions',因为它不是 Angular 子模块中 'input' 的已知属性

css - 在 Typescript 中定义 CSS Position 接口(interface)的正确方法是什么?

javascript - Angular2 Reactive Forms 禁用表单组中的元素