Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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 由Observable指定的角度数组为空_Angular_Typescript_Service_Observable - Fatal编程技术网

Angular 由Observable指定的角度数组为空

Angular 由Observable指定的角度数组为空,angular,typescript,service,observable,Angular,Typescript,Service,Observable,我目前正在学习Angular,需要从本地服务器获取一些数据,但是当我尝试在代码中使用数组时,它似乎是空的,尽管我可以对其使用ngFor指令,并且它显示正确 我已硬编码了以下数据: // person-data.ts export var PERSON_DATA = [ { "vorname": "Adrian", "nachname": "Moos" }, { "vorname": "Ferdinand",

我目前正在学习Angular,需要从本地服务器获取一些数据,但是当我尝试在代码中使用数组时,它似乎是空的,尽管我可以对其使用
ngFor
指令,并且它显示正确

我已硬编码了以下数据:

// person-data.ts

export var PERSON_DATA = [
    {
        "vorname": "Adrian",
        "nachname": "Moos"
    },
    {
        "vorname": "Ferdinand",
        "nachname": "Hübner"
    }
];
这与我从本地主机(Spring)接收到的数据集完全相同。我使用提供的代码将数据放入表结构中,这需要将数据放入另一个名为
addressData
的数组中,如下所示:

// person-list.component.ts

import {PERSON_DATA} from "./person-data";

addressData = [];

ngOnInit() {
    this.addressData = PERSON_DATA;
}
最后我用ngFor指令把它放到表结构中,非常简单

  <li *ngFor="let p of addressData">
    {{p.vorname}} - {{p.nachname}}
  </li>
现在发生的情况是,当我对persons数组使用
ngFor
指令时,它工作,但当我使用
addressData
数组时,它不工作

// this works

<li *ngFor="let p of persons">
    {{p.vorname}} - {{p.nachname}}
</li>
//这很管用

{{p.vorname}}-{p.nachname}

但是

//这不起作用

{{p.vorname}}-{p.nachname}

我错过了什么


为什么不将数据分配给另一个数组?

您正在分配
this.addressData=this.persons订阅的外部。其平均值
this.addressData=this.persons
调用之前,首先执行code>。因为您需要分配
this.addressData=this.persons内部订阅方法,如下所示

this._personService.getAll().subscribe(data => {
    this.persons = data;
    this.addressData = this.persons;
});

希望这对你有帮助

您可能想向@Miger解释为什么他必须将它放在subscribe方法中。人们通过得到解释而不仅仅是复制粘贴代码来学习:)不,没关系,我现在知道它是如何工作的,它并不能真正解决我的问题,但至少我现在知道该怎么做了。我不知道我可以把这句话放在大括号里,非常感谢@Gijs帖子谢谢你的建议我更新了我的答案(有点解释:)和@Miger很高兴听到这个消息:)
// this does not work

<li *ngFor="let p of addressData">
    {{p.vorname}} - {{p.nachname}}
</li>
this._personService.getAll().subscribe(data => {
    this.persons = data;
    this.addressData = this.persons;
});