Javascript 命中API端点的角度材质数据表

Javascript 命中API端点的角度材质数据表,javascript,angular,angular-material,frontend,Javascript,Angular,Angular Material,Frontend,我试图创建一个角度材质表,该表显示来自API端点的动态数据,但只有表头填充屏幕,其中没有任何数据 而且它也不会抛出任何错误 每当我把硬编码的数据,它的工作。但那不是我想要的 这是我的table-component.ts文件 如您所见,我正在向控制台打印COUNTRY_数据中包含的内容,并获得预期的数据:一个对象数组 但它们不会填充表格。。。看起来是这样的: 代码的主要问题是,您没有将数组推送到数据源中,而是实例化了一个空实例 如果调用dataSource=newMattableDataSourc

我试图创建一个角度材质表,该表显示来自API端点的动态数据,但只有表头填充屏幕,其中没有任何数据

而且它也不会抛出任何错误

每当我把硬编码的数据,它的工作。但那不是我想要的

这是我的table-component.ts文件

如您所见,我正在向控制台打印COUNTRY_数据中包含的内容,并获得预期的数据:一个对象数组

但它们不会填充表格。。。看起来是这样的:


代码的主要问题是,您没有将数组推送到数据源中,而是实例化了一个空实例

如果调用dataSource=newMattableDataSourceCountry\u DATA;在console.logCOUNTRY_DATA的位置,它应该可以工作

当接收到一个可观察的响应时,一个更好的方法是使用映射而不是循环,下面是映射的答案


另外,如果您使用一个接口来介绍您的对象,并将结果映射到您的ApiService中,并将其设置为组件中数据源的值,则会更好。

谢谢!成功了!更重要的是,我明白了为什么它会起作用。很好,很高兴我帮了忙!
import { Component, OnInit } from '@angular/core';
import { ApiService } from '../api.service'
import { MatTableDataSource } from '@angular/material/table';

const COUNTRY_DATA = []

@Component({
  selector: 'app-table',
  templateUrl: './table.component.html',
  styleUrls: ['./table.component.scss']
})

export class TableComponent implements OnInit {

  countryJSON;
  displayedColumns: string[] = ['name', 'cases', 'deaths', 'recov', 'permill'];
  dataSource = new MatTableDataSource(COUNTRY_DATA);

  constructor(private apiService: ApiService) {
  }

  ngOnInit(): void {
    this.apiService.getNews().subscribe((dataJSON) => {
      this.countryJSON = dataJSON
      for (let countryObject of this.countryJSON) {
        COUNTRY_DATA.push
          ({
            name: countryObject.country_name,
            cases: countryObject.total_cases,
            deaths: countryObject.total_deaths,
            recov: countryObject.total_recov,
            permill: countryObject.case_per_mill
          })
      }

      console.log(COUNTRY_DATA)
    })
  }
}