首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从API (角)获取数据

从API (角)获取数据
EN

Stack Overflow用户
提问于 2018-07-31 14:59:58
回答 2查看 940关注 0票数 1

我需要通过提交按钮从API获取数据。

这是url -https://api.chucknorris.io/jokes/search?query=*

*是输入的值。

这是API的响应。

代码语言:javascript
复制
{
"total": 1,
"result": [
    {
        "category": null,
        "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
        "id": "cq6hLP0ETeW4VSrm7SYg5A",
        "url": "https://api.chucknorris.io/jokes/cq6hLP0ETeW4VSrm7SYg5A",
        "value": "Chuck Norris knows WAZZZUP!"
    }
]

}

我需要从结果中得到值并在视图中显示出来

正如您所看到的,是一个对象,而不是数组

我试过这样做

模板码

代码语言:javascript
复制
<div class="container-fluid">
  <form class="form-inline" (ngSubmit)="search()" [formGroup]="searchForm" novalidate>
      <label for="text">Enter value:</label>
      <input formControlName="jokevalue" style="margin-left:20px;" type="text" class="form-control" id="email">
      <button style="margin-left:20px;" type="submit" class="btn btn-primary">Submit</button>
  </form>
  <div style="background: black; height: 60px;" *ngFor="let joke of jokes;index as i">
      <p style="color: white">{{i}}</p>
      <p style="color: white">{{joke.result[i].value}}</p>
  </div>

组件代码

代码语言:javascript
复制
   import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { finalize } from 'rxjs/operators';
import { Http, Headers, Response, URLSearchParams } from '@angular/http';
import { HttpClient } from '@angular/common/http';

import { environment } from '@env/environment';
import { Logger, I18nService, AuthenticationService } from '@app/core';

@Component({
  selector: 'app-testcomponent',
  templateUrl: './testcomponent.component.html',
  styleUrls: ['./testcomponent.component.scss']
})
export class TestcomponentComponent implements OnInit {
  public jokes: any;
  version: string = environment.version;
  error: string;
  searchForm: FormGroup;

  constructor(
    private formBuilder: FormBuilder,
    private http: HttpClient
    ) {
    this.createForm();
   }

  ngOnInit() {}

  search() {
    this.http.get('https://api.chucknorris.io/jokes/search?query='+this.searchForm.value.jokevalue ).subscribe(
    data => [
      console.log(data),
      this.jokes = data

    ])
  }

  private createForm() {
    this.searchForm = this.formBuilder.group({
      jokevalue: ['', Validators.required],
    });
  }
}

但上面写着

无法找到“对象”类型的不同支持对象“对象对象”。NgFor只支持绑定到诸如数组之类的Iterable。

我怎么能。解决这个问题?

谢谢你帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-31 15:05:09

笑话数组在data.result中。

this.jokes = data.result应该能工作。

票数 5
EN

Stack Overflow用户

发布于 2018-07-31 15:07:22

您正在迭代响应对象,而不是响应对象中的结果。

在模板中更改此内容:*ngFor="let joke of jokes.result;index as i"

也可以将组件更改为:this.jokes = data.result

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51616435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档