2017-10-13 76 views
6

Podążam za this tutorial informacjami o tym, jak połączyć bazę danych z bazą danych firebase. Ale w minutę 17:30 Dostaję taki błąd:Właściwość "subskrybuj" AngularFIRE nie istnieje w typie "AngularFireList <{}>"

Property 'Zapisz' nie istnieje w rodzaju 'AngularFireList < {}>'

mój AppComponent:

import { Component } from '@angular/core'; 
import {AngularFireDatabase, AngularFireDatabaseModule} from 'angularfire2/database'; 

import {AngularFireAuth, AngularFireAuthModule} from 'angularfire2/auth'; 
import { Observable } from 'rxjs/Observable'; 
import * as firebase from 'firebase/app'; 
import { Country } from './models/country'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 

export class AppComponent { 
    countries: any[]; 

    constructor(db: AngularFireDatabase) 
    { 
    db.list('/Country/countries') 
    .subscribe(countries => { // <--ERROR IS HERE 
     this.countries = countries; 
     console.log(this.countries); 
     }); 
    } 
} 

My model:

export class Country { 
    // --ATTRIB-- 
    id: string; 
    name: string; 
    code: string; 
    urlFlag: string; 
} 

Nie mogę znaleźć niczego na temat tego błędu. Jestem początkujący w kanciastym. Dzięki, jeśli możesz mi pomóc.

Odpowiedz

10

Począwszy od AngularFire 5.0 będziesz chciał użyć jednego z snapshotChanges(), valueChanges<T>(), stateChanges() lub auditTrail(). See the 5.0 migration guide.

Zacznij korzystać z najbardziej podstawowych, valueChanges():

export class AppComponent { 
    countries: Observable<Country[]>; 
    constructor(db: AngularFireDatabase) { 
    this.countries = db.list('/Country/countries').valueChanges(); 
    } 
} 
+0

"aktualizacja działa!" ;RE –

4

Prostsza zmiana miałaby się dodać: valueChanges() przed: .subscribe()

db.list('/Country/countries').valueChanges().subscribe(countries => { 
    this.countries = countries; 
    console.log(this.countries); 
}); 
0

wypróbuj następne :

export class AppComponent { 
    countries: any[]; 

    constructor(db: AngularFireDatabase) 
    { 
     this.countries = db.list('/Country/countries').valuesChanges(); 
    } 
} 

A jeśli masz model, to:

export class AppComponent { 
    countries: Country[]; 

    constructor(db: AngularFireDatabase) 
    { 
    this.countries = db.list<Country>('/Country/countries').valueChanges(); 
    } 
}