如何在Angularfire2 Angular2中对FirebaseListObservable列表进行排序?

前端之家收集整理的这篇文章主要介绍了如何在Angularfire2 Angular2中对FirebaseListObservable列表进行排序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望从Firebase实时数据库获取所有用户,并按分数属性对其进行排序.我已经使用变量工作了
用户:FirebaseListObservable< any []&gt ;;
但是我得到了错误

Type 'Observable<any[]>' is not assignable to type 'FirebaseListObservable<any[]>'.
Property '_ref' is missing in type 'Observable<any[]>'.

如果我将变量更改为
用户:Observable< any []&gt ;;
那么错误消失了,但是我不能使用像.push()和.update()这样的Angularfire方法.

我的提取和排序代码(有效)看起来像:

this.users = this.af.database.list('/users')
  .map(items => items.sort((a,b) => b.score - a.score));

我将不胜感激任何有关如何避免错误或任何首选方式的建议,谢谢!

解决方法

FirebaseListObservable实现 lift,因此RxJS运算符(如map)将返回FirebaseListObservable实例.

就是这样 – 当使用TypeScript时 – RxJS运算符被静态类型化以返回Observable,因此您必须强制转换为FirebaseListObservable. (使用RxJS不必涉及TypeScript,如果你看the guidance for adding operators,你会看到没有提到类型.)

您可以通过查找问题中提到的推送和更新功能来验证是否返回了FirebaseListObservable实例:

this.users = this.af.database
  .list('/users')
  .map(items => items.sort((a,b) => b.score - a.score)) as FirebaseListObservable<any[]>;
console.log(this.users.push.toString());
console.log(this.users.update.toString());

但请注意,这对于作为查询创建的FirebaseListObservable实例不起作用.关于这种情况有一个as-yet-unanswered question.

猜你在找的Angularjs相关文章