Sorry für die lange Frage. Ich habe eine Liste von Ereignissen, die ich wie diese:Firebase - Abrufen eines einzelnen Objekts
export class HomePageComponent implements OnInit {
events: FirebaseListObservable<EventModel[]>;
constructor(
private authService: AuthService,
private router: Router,
private db: AngularFireDatabase
) {
this.events = db.list('/events');
}
ngOnInit() {
}
}
Veranstaltungen wie diese angezeigt:
<md-card *ngFor="let event of events | async">
<a [routerLink]="['event', event.slug]"><img class="event-img" src="http://lorempixel.com/30/30" />{{ event.name }}</a>
</md-card>
Die event.component
sieht wie folgt aus:
export class EventComponent implements OnInit {
event: Object;
name: String;
constructor(db: AngularFireDatabase, route: Router) {
const eventQuery = db.list('/events', {
query: {
orderByChild: 'slug',
equalTo: 'event-name'
}
}).subscribe(data => {
this.event = data[0];
});
}
ngOnInit() {
}
}
this.event
abgeschlossen ist und der Korrekte Informationen werden abgefragt. Es sieht wie folgt aus:
Object {category: "category", description: "description", googleMap: "map", guests: Object, name: "Event name"…}
category: "category"
description: "description"
googleMap: "map"
guests: Object
name: "Event name"
slug: "event-name"
venue: "The venue"
$exists: function()
$key: "-xxxxxxxx"
__proto__: Object
Wenn ich versuche, {{event.name}}
den Namen angezeigt werden ich einen Fehler
ERROR TypeError: Cannot read property 'name' of undefined
at Object.eval [as updateRenderer]
Zusätzliche Frage erhalten:
Da die Ereignisinformationen bereits vorhanden in HomePageComponent
, kann es sein, an EventComponent
gesendet und verwendet, um das Ereignis anzuzeigen? Vielleicht vermeidet dies eine zusätzliche Datenbankabfrage.
Hallo. Danke für die Antwort. Ich habe der 'event.component.html' den sicheren Operator hinzugefügt und es hat funktioniert. Ich habe keine Fehler in der 'homepage.component.html' wo der Link ist. Das klappt also. Hast du meine zusätzliche Frage bemerkt? – Ciprian
upvote wenn es geholfen hat – Sajeetharan