Angular 由Observable指定的角度数组为空
我目前正在学习Angular,需要从本地服务器获取一些数据,但是当我尝试在代码中使用数组时,它似乎是空的,尽管我可以对其使用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",
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在数据来自this.\u personService.getAll()
调用之前,首先执行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;
});