2017-09-01 3 views
0

Ich versuche, ein einzelnes Objekt aus der Firebase abzurufen Es gibt keinen Wert zurück Stattdessen habe ich diese Nachricht "FirebaseObjectable {_isScalar: false, $ ref: Reference, Quelle: FirebaseObjectObservable, operator: ObserveOnOperator} "FirebaseObjectObservable gibt Nullwert zurück

so schreibe ich meinen Service, getDataList() -Methode funktioniert perfekt. Get getDataD(), die ein einzelnes Objekt abrufen soll, ist mein Anliegen.

import { Injectable } from '@angular/core'; 
import { AngularFireDatabase, FirebaseListObservable , FirebaseObjectObservable} from 'angularfire2/database'; 
import { Data } from '../data'; 
import { AngularFireModule } from 'angularfire2'; 


@Injectable() 
export class Ng2fireServiceService { 

    private basePath: string = '/data'; 
    dataL: FirebaseListObservable<Data[]> = null; // list of objects 
    dataD: FirebaseObjectObservable<Data> = null; // single object 

    constructor(private af: AngularFireModule, 
       private db: AngularFireDatabase) { } 


    getDataList(query={}): FirebaseListObservable<Data[]> { 
    this.dataL = this.db.list(this.basePath, { 
    query: query 
    }); 
    return this.dataL 
    } 
// Return a single observable item 
    getDataD(key: string): FirebaseObjectObservable<Data> { 
    const dataPath = `${this.basePath}/${key}`; 
    this.dataD = this.db.object(dataPath) 
    return this.dataD 
    } 

} 

und dies, wie ich es in meiner Komponente nennen

import { Ng2fireServiceService } from '../../services/ng2fire-service.service'; 
import { Component, OnInit} from '@angular/core'; 
import { Data } from '../../data'; 
import { Router, ActivatedRoute, Params } from '@angular/router'; 



@Component({ 
    selector: 'app-data-detail', 
    templateUrl: './data-detail.component.html', 
    styleUrls: ['./data-detail.component.css'] 
}) 
export class DataDetailComponent implements OnInit { 

    id : string ; 
    dataD : any; 

    constructor(public authService :AuthService, private SVC : Ng2fireServiceService,private router : Router, 
    private route : ActivatedRoute) { } 

    ngOnInit() { 

    this.id = this.route.snapshot.params['id']; 

    this.dataD = this.SVC.getDataD(this.id); 

    console.log(this.dataD); 
    } 

}

Sie haben keine ideo, wie mit diesem

Antwort

1

zu behandeln, weil Sie auf beobachtbare abonnieren Dont. Versuchen Sie Folgendes:

ngOnInit() { 

    this.id = this.route.snapshot.params['id']; 

    this.SVC.getDataD(this.id).subscribe(val => this.dataD = val); 
Verwandte Themen