3

我需要帮助来显示 Angular 4 中 api 的订阅输出。我怎么能这样做,因为我写了 data.data.data 但它说类型对象上不存在属性数据。我将如何在浏览器中输出它?下面是我的代码和下面的api图片

在此处输入图像描述

import { Component, OnInit } from '@angular/core';
import { NewsService } from '../news.service';

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

  constructor(private newsService: NewsService) { }

  ngOnInit() {

    this.newsService.getNews()
      .subscribe(
        data => {
          alert("News Success");
          console.log(data);
        },
        error => {
          alert("ERROR");
        });
  }
}
4

3 回答 3

10

在组件中创建属性

myData: any[] = [];

在您的订阅者功能中

import { Component, OnInit } from '@angular/core';
import { NewsService } from '../news.service';

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

  constructor(private newsService: NewsService) { }

  ngOnInit() {

    this.newsService.getNews()
      .subscribe(
        (res: any) => {
          alert("News Success");
          this.myData = res.data; 
          // Where you find the array res.data or res.data.data
          console.log('res is ', res.data);
        },
        error => {
          alert("ERROR");
        });
      }
    }

并在您的模板中

1) 查看 JSON 的选项

<pre>{{myData | json}}</pre>

2)如果你有数组,则循环选项

<div *ngFor="let d of myData">
    {{d}}
</div>
于 2017-09-07T04:41:01.620 回答
1

您的数据是数组类型,

创建任何类型的变量

myData : any;

并将数据分配给 myData,

this.newsService
    .getNews()
    .subscribe(
        data => {
           this.myData = data.data;
        },
        error => {
          alert("ERROR");
        }
    );

您可以使用它ngFor来遍历数组并在 HTML 中显示

<li *ngFor="let item of myData">
     {{item}}
</li>
于 2017-09-07T04:29:15.800 回答
1

你需要这样做

ngOnInit() {
 this.newsService.getNews()
  .subscribe(
    data => {
      data = data.json();
      console.log(data.data);
    },
    error => {
      alert("ERROR");
    });

}

data.json()部分很重要,它将响应转换为正确的 json,以便可以访问其数据。现在您可以像这样将它分配给实例变量

this.myArrayData = data.data

在你的subscribe()方法里面然后在你的模板中

<div *ngFor="let data of myArrayData">
  <!-- do whatever with the data properties -->
</div>
于 2017-09-07T04:50:18.507 回答