Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度列表包含元素,但长度为0_Angular_Typescript_Http_Asynchronous - Fatal编程技术网

Angular 角度列表包含元素,但长度为0

Angular 角度列表包含元素,但长度为0,angular,typescript,http,asynchronous,Angular,Typescript,Http,Asynchronous,我使用下面的代码发出HTTPGET请求,如下所示 export class Covid19Service { baseUrl = 'https://api.covid19api.com/'; constructor(private http: HttpClient) { } getSummary() { return this.http.get(this.baseUrl + 'summary').subscribe(data => { console.l

我使用下面的代码发出HTTPGET请求,如下所示

export class Covid19Service {
  baseUrl = 'https://api.covid19api.com/';

  constructor(private http: HttpClient) { }

  getSummary() {
    return this.http.get(this.baseUrl + 'summary').subscribe(data => {
      console.log(data);
    });
  }

  getCountry() {
    return this.http.get(this.baseUrl + 'dayone/country/ie/status/confirmed');
  }

}
然后,我将数据解析到getCountry()方法中的列表中

导出类BarchartComponent实现OnInit{
dailyTotalConfirmed:编号[]=[];
Dailynewconfirm:编号[]=[];
构造函数(私有covid19:Covid19Service){}
恩戈尼尼特(){
这个。getCountry();
this.calculatedailynewconfirm();
console.log(此.dailyTotalConfirm);
console.log(this.dailynewconfirm);
}
getSummary(){
返回此.covid19.getSummary();
}
getCountry(){
this.covid19.getCountry()
.订阅(数据=>{
const covid=Object.keys(数据);
用于(新冠病毒的常数键){
const cases=data[key]。cases;
每日总确认推送(例);
}
});
}
CalculateDailyNewConfiged(){
const data=this.dailyTotalConfirm;
for(设i=0;i
调用calculateDailyNew()方法时,该方法中的for循环不会执行,因为列表的长度为0,即使在I console.log()调用列表时,列表中有元素。
我做错了什么?

如果不在本地运行代码,它看起来像是在
getCountry()
完成之前运行了
calculatedailynewconfirm()

您必须对其进行设置,使
calculatedailynewconfirm()
仅在
getCountry()
从API收到数据后运行。有更好的方法,但最简单的解释和实现方法是将
getCountry()
重命名为类似
getCountry和calculatedailynewconfirm()
,然后在subscribe块内进行调用:

getCountryAndCalculateDailyNewConfirmed() {
this.covid19.getCountry()
.subscribe(data => {
  const covid = Object.keys(data);

  for (const key of covid) {
    const cases = data[key].Cases;
    this.dailyTotalConfirmed.push(cases);
  }
  this.calculateNewDailyConfirmed();
});
}

希望这能解决您的问题。

calculatedailynewconfirm
subscribe
获取其值之前调用

ngOnInit(){
这个。getCountry()//
getCountryAndCalculateDailyNewConfirmed() {
this.covid19.getCountry()
.subscribe(data => {
  const covid = Object.keys(data);

  for (const key of covid) {
    const cases = data[key].Cases;
    this.dailyTotalConfirmed.push(cases);
  }
  this.calculateNewDailyConfirmed();
});
}