【问题标题】:How to get JSON data and show in component HTML with input type for Angular 8如何获取 JSON 数据并在具有 Angular 8 输入类型的组件 HTML 中显示
【发布时间】:2019-08-31 09:54:33
【问题描述】:

编辑

嗨,让我解决一下我下面的问题。我已经编辑了下面的所有源代码,首先我有两个 json 文件(一个来自付款,另一个来自销售)但在再次检查 API 后......我可以仅使用一个 JSON 来显示所有数据。

请检查我修改后的 JSON 报告和您的 reff 的所有源代码,我担心当我将“pzrgb2l1lc8w7dp5”(来自支付对象)放入 html.component 时,表格将显示“sale_id”和“status” (来自支付对象)和“firstname”、“lastname”和“email”(来自具有相同“sale_id”的客户对象)。

编辑

如果这个问题已经存在,请先道歉,但现在似乎还没有,因为我已经一个星期来寻找解决问题的方法,但还没有找到答案。

我已设法使用 angular 从 HTTP 服务获取 JSON 数据,我有两个 JSON Url,并希望将其制作成一份报告并成功。但是我想用输入法和按钮来获取JSON报告,没找到教程。

{
  "success": 1,
  "object": "list",
  "total_count": 2,
  "data": [
    {
      "object": "sale",
      "id": "j9cncjq0",
      "status": "Completed",
      "customer": {
        "object": "customer",
        "id": "uj56cbj3943sq1sg",
        "email": "iron.man@email.com",
        "firstname": "Iron",
        "lastname": "Man"
      },
      "payments": {
        "object": "list",
        "total_count": 1,
        "data": [
          {
            "object": "payment",
            "id": "pzrgb2l1lc8w7dp5",
            "sale_id": "j9cncjq0",
            "status": "COMPLETED",
          }
        ]
      }
    },
    {
      "object": "sale",
      "id": "sl8hcw26",
      "status": "Completed",
      "customer": {
        "object": "customer",
        "id": "upwvs7xqbc6zhwxh",
        "email": "black.widows@email.com",
        "firstname": "Black",
        "lastname": "Widows"
      },
      "payments": {
        "object": "list",
        "total_count": 1,
        "data": [
          {
            "object": "payment",
            "id": "pjd79f1yygqrm43q",
            "sale_id": "sl8hcw26",
            "status": "COMPLETED",
          }
        ]
      }
    }
  ]
}

下面是json.service.ts代码

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})

export class JsonService {

  api_key = '1237bb46b22ee';

  private _urlSale: string = 'https://source-website-api/sales?apiKey='+this.api_key;

  constructor(private http: HttpClient) { }

  getSale() {
    return this.http.get(this._urlSale)
  }

}

下面是json.component.ts代码

import { Component, OnInit } from '@angular/core';
import { JsonService } from '../../service/json.service';

@Component({
  selector: 'app-json',
  templateUrl: './json.component.html',
  styleUrls: ['./json.component.css']
})
export class JsonComponent implements OnInit {

  saleJSON: object;

  constructor(private _http: JsonService) { }

  ngOnInit() {
    this._http.getSale().subscribe(data => {
      this.saleJSON = data;
      console.log(this.saleJSON);
    })
  }
}

下面是json.component.html代码

<h1>JSON Receive Data</h1>

<p>Payment Number</p>

<input type="text"> <br><br>
<button type="submit">Check</button>
<p></p>

<table style="width:70%">
    <tr>
      <th>Sale ID</th>
      <th>First Name</th>
      <th>Last Name</th>
      <th>Email</th>
      <th>Status</th>
    </tr>
    <tr align="center">
      <td> payment.sale_id </td>
      <td> customer.firstname </td>
      <td> customer.lastname </td>
      <td> customer.email </td>
      <td> payment.status </td>
    </tr>
  </table> 

<p>{{errorMsg}}</p>

希望有人能帮帮我,谢谢。

【问题讨论】:

  • 你能不能试着改进一下语言。。不是很清楚你需要什么。
  • 你是指代码的语言还是我的英语兄弟?因为英语不是我的主要语言抱歉让你混淆了..
  • 当您说“我想使用输入和按钮来获取 JSON 报告”时,这是什么意思?您想在用户单击按钮时从 API 获取数据吗?其实你的问题不是很清楚。请稍微解释一下。
  • 您遇到的错误是什么。请提供错误日志
  • 对不起,让大家混淆了,是的,我想通过点击按钮输入输入类型的付款代码时获取数据,上面的代码我没有收到错误(@ 987654321@) 这是我的屏幕结果。我成功获取了两个不同 API url 的数据。

标签: html json angular angular-json


【解决方案1】:

如果您指的是使按钮单击功能可以访问输入中的值,有几种方法可以做到这一点。一个简单的选择是为输入创建一个变量并绑定到 html 输入元素。然后可以从单击按钮功能访问此值。例如

  export class JsonService {
    inputValue: string
  ...

  check(){
    console.log('running check',this.inputValue)
  }
<input type="text" [(ngModel)]="inputValue"> <br><br>
<button type="submit" (click)="check()">Check</button>

或者,您可以通过为输入 html 提供本地引用并在按钮单击函数中引用它来剪切一些代码

  check(value){
    console.log('running check',value)
  }
<input type="text" #myInput> <br><br>
<button type="submit" (click)="check(myInput.value)">Check</button>

【讨论】:

  • 嗨,克里斯,谢谢你的建议,但这并不能解决我的问题,我已经编辑了问题以便更好地理解,谢谢
  • 好的,是的,您的问题仍然令人困惑。所以为了让事情更清楚: 1. 你会向你的 api 发出一两个数据请求吗? 2. 它们是同时制作还是一个接一个? 3. 如果有多个请求,您能否添加从两者接收到的数据样本(从 api 中的确切外观)
  • 在这些类型的代码复杂且发生许多事情的情况下,创建一个所需信息最少的工作演示是最有用的。我已经在下面的 stackblitz stackblitz.com/edit/angular-wve1xd 中做到了这一点,但是如果没有进一步了解问题,我不知道如何进行
  • 嗨,克里斯,如果您仍然感到困惑 :).. 我在 link 创建了一个工作演示,我可以在 html 中显示 json,但我仍然需要使用输入进行验证,所以当我将paymentID放入输入文本时,如果找到的记录将显示“状态完成”。
  • 我可以调用我的服务,并从 JSON 中检索数据,但我被困在如何根据输入的值对检索到的数据执行搜索。
猜你喜欢
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2019-08-19
  • 2021-12-12
  • 2019-04-25
  • 1970-01-01
相关资源
最近更新 更多