2017-06-17 10 views
0

長い質問を申し訳ありません。私は、このように取得イベントのリストを持っている:Firebase - 単一のオブジェクトを取得する

export class HomePageComponent implements OnInit { 

    events: FirebaseListObservable<EventModel[]>; 

    constructor(
    private authService: AuthService, 
    private router: Router, 
    private db: AngularFireDatabase 
) { 
    this.events = db.list('/events'); 
    } 

    ngOnInit() { 
    } 

} 

イベントは次のように表示されます。

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完了すると:

<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> 

event.componentは次のようになります正しい情報が照会されています。それは次のようになります。

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 

私は名前{{event.name}}を表示しようとすると、私は追加の質問エラー

ERROR TypeError: Cannot read property 'name' of undefined 
at Object.eval [as updateRenderer] 

取得:

イベント情報がすでにHomePageComponentに存在するので、それができるのEventComponentに送信され、イベントを表示するために使用されますか?たぶんこれは追加のデータベースクエリを避けるでしょう。

答えて

1

使用安全なオペレータ?

<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> 
+0

こんにちは。答えてくれてありがとう。安全な演算子を 'event.component.html'に追加しました。私は、 'homepage.component.html'にリンクがどこにあるのかに間違いはありません。そうです。あなたはもう私の質問に気づいたのですか? – Ciprian

+0

upvote助けがあれば – Sajeetharan

関連する問題