AngularFIRE属性'subscribe'在类型'AngularFireList <{}>'上不存在

Die*_*cio 8 firebase firebase-realtime-database angular-cli angularfire2

我正在按照本教程关于如何将angular与firebase数据库连接起来.但是在第17:30分钟,我收到了这个错误:

'AngularFireList <{}>'类型中不存在属性'subscribe'

我的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);
      });
  }
}
Run Code Online (Sandbox Code Playgroud)

我的模特:

export class Country {
     // --ATTRIB--
     id: string;
     name: string;
     code: string;
     urlFlag: string;
}
Run Code Online (Sandbox Code Playgroud)

找不到任何关于此错误的信息.我是棱角分明的初学者.谢谢,如果可以帮助我.

Jam*_*els 20

在AngularFire 5.0开始,你需要使用一个snapshotChanges(),valueChanges<T>(),stateChanges(),或auditTrail().请参阅5.0迁移指南.

开始使用最基本的,valueChanges():

export class AppComponent {
  countries: Observable<Country[]>;
  constructor(db: AngularFireDatabase ) {
    this.countries = db.list('/Country/countries').valueChanges();
  }
}
Run Code Online (Sandbox Code Playgroud)


ale*_*lex 13

valueChanges()之前会添加一个更简单的更改 .subscribe()

db.list('/Country/countries').valueChanges().subscribe(countries => {
    this.countries = countries;
    console.log(this.countries);
});
Run Code Online (Sandbox Code Playgroud)

  • 我真的不明白为什么谷歌不断以这种方式更新它,我花了这么长时间才完成这么简单的任务(太蹩脚了)。 (2认同)