使用 *ngFor Angular v5 访问数组
Access array with *ngFor Angular v5
我在 Firebase 中有一些 JSON 数据,我试图在 Angular v5.
中使用 *ngFor 循环访问这些数据
对象看起来像这样:
{
"events": [
{
"Event-time": "09:30",
"Event-name": "Morning Session",
"Location": "Alexander Room",
"Speaker-image": "https://z4e3q7e996-flywheel.netdna-ssl.com/wp-content/uploads/2017/07/TeamPhotosIan.png",
"Speaker-name": "Ian Broom",
"Speaker-title": "CEO & Founder"
},
{
"Event-time": "11:30",
"Event-name": "Morning Session II",
"Location": "Coffee Room",
"Speaker-image": "https://z4e3q7e996-flywheel.netdna-ssl.com/wp-content/uploads/2012/07/TeamPhotosben.png",
"Speaker-name": "Ben Wynne-Simmons",
"Speaker-title": "Head of Growth & Marketing"
}
]
}
这是我的活动-list.component:
export class EventsListComponent implements OnInit {
eventsObservable: Observable<any[]>;
constructor(private db: AngularFireDatabase) { }
ngOnInit() {
this.eventsObservable = this.getEvents('/events');
}
getEvents(listPath): Observable<any[]> {
return this.db.list(listPath).valueChanges();
}
}
我正在尝试像这样循环:
<ul>
<li *ngFor="let event of eventsObservable | async">
<p>{{event.Event-name}}</p>
</li>
</ul>
打印出来的是NaN。
我不知道如何访问和显示数据。
请帮忙!谢谢!
您需要访问事件,它是 eventsObservable 对象中的一个数组
<div *ngFor="let event of eventsObservable.events | async">
<p>{{event.Event-name}}</p>
</div>
问题在于访问包含符号 -
的字段。
它被解释为数学减法(并且由于 event.Event 和名称都不是数字,event.Event - name
给出 NaN
(NotANumber)。
要访问名称中带有特殊字符的此类字段,您必须使用括号表示法:
<p>{{event["Event-name"]}}</p>
此外,正如其他答案所说,您必须直接迭代数组。我不太清楚你是如何在你的答案中得到你的观察结果的。如果你从大对象中得到一个 Observable,那么你应该 .map
你的 observable 到它的 events
字段。
这将为您提供另一个可观察对象,您应该对后者进行迭代。
我在 Firebase 中有一些 JSON 数据,我试图在 Angular v5.
中使用 *ngFor 循环访问这些数据对象看起来像这样:
{
"events": [
{
"Event-time": "09:30",
"Event-name": "Morning Session",
"Location": "Alexander Room",
"Speaker-image": "https://z4e3q7e996-flywheel.netdna-ssl.com/wp-content/uploads/2017/07/TeamPhotosIan.png",
"Speaker-name": "Ian Broom",
"Speaker-title": "CEO & Founder"
},
{
"Event-time": "11:30",
"Event-name": "Morning Session II",
"Location": "Coffee Room",
"Speaker-image": "https://z4e3q7e996-flywheel.netdna-ssl.com/wp-content/uploads/2012/07/TeamPhotosben.png",
"Speaker-name": "Ben Wynne-Simmons",
"Speaker-title": "Head of Growth & Marketing"
}
]
}
这是我的活动-list.component:
export class EventsListComponent implements OnInit {
eventsObservable: Observable<any[]>;
constructor(private db: AngularFireDatabase) { }
ngOnInit() {
this.eventsObservable = this.getEvents('/events');
}
getEvents(listPath): Observable<any[]> {
return this.db.list(listPath).valueChanges();
}
}
我正在尝试像这样循环:
<ul>
<li *ngFor="let event of eventsObservable | async">
<p>{{event.Event-name}}</p>
</li>
</ul>
打印出来的是NaN。
我不知道如何访问和显示数据。
请帮忙!谢谢!
您需要访问事件,它是 eventsObservable 对象中的一个数组
<div *ngFor="let event of eventsObservable.events | async">
<p>{{event.Event-name}}</p>
</div>
问题在于访问包含符号 -
的字段。
它被解释为数学减法(并且由于 event.Event 和名称都不是数字,event.Event - name
给出 NaN
(NotANumber)。
要访问名称中带有特殊字符的此类字段,您必须使用括号表示法:
<p>{{event["Event-name"]}}</p>
此外,正如其他答案所说,您必须直接迭代数组。我不太清楚你是如何在你的答案中得到你的观察结果的。如果你从大对象中得到一个 Observable,那么你应该 .map
你的 observable 到它的 events
字段。
这将为您提供另一个可观察对象,您应该对后者进行迭代。