为什么我不能在 FirebaseListObservable 上调用 toArray()?

Why can I not call toArray() on FirebaseListObservable?

在 Ionic 项目中,我有:

import { AngularFireDatabase, FirebaseListObservable} from 'angularfire2/database';

和一个 class 字段:

songs: FirebaseListObservable<any>;

因此,代码行:

this.songs = db.list('/songs');

有效并允许我输入行:

<button ion-button ouline *ngFor="let song of songs | async">

在我的 html 中没有问题。

现在,FirebaseListObservable 扩展了 RxJS Observable (source)。 此外,Observable 有一个方法 toArray()。但是,当我 运行 我的项目时,我看到:

Typescript Error
Property 'toArray' does not exist on type 'FirebaseListObservable<any>'.

这是为什么?有没有另一种方法可以从 songs 观察到的数组中获取数组?

我不太确定为什么 toArray() 不起作用,但我可以建议您一种从数据库中获取所需数组的方法。(我通常在只需要不带数组的数组时这样做能够监听数据库的任何变化——就像 Observable 一样):

this.db.list('/songs')
.first().toPromise()
.then(response => {
  //code to handle the response - in this case its a list

  This.items = response;
})
.catch(error => { //error code here });

不要忘记先导入 rxjs 和 toPromise

真心希望能满足你的愿望,对你有所帮助:)