2017-09-01 85 views
0

我试图从Firebase中检索单个对象,但它没有返回任何值。我有这个消息,而不是“FirebaseObjectObservable {_isScalar:false,$ ref:Reference,source:FirebaseObjectObservable,operator:ObserveOnOperator} “FirebaseObjectObservable返回null值

这就是我如何编写我的服务,getDataList()方法完美工作。get getDataD()应该检索单个对象是我关心的问题。

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 
    } 

} 

,这我怎么称呼它在我的组件

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); 
    } 

}

你对如何处理这个

回答

1

因为你不订阅可观察到的任何IDEO。试试这个:

ngOnInit() { 

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

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