将FirebaseListObservable结果转换为对象

时间:2016-11-16 12:34:14

标签: angular firebase angularfire2

我正在使用angularfire-beta6。假设我有一个myHeroes:FirebaseListObservable<Hero[]>,并在我的模板中使用 async -pipe,我无法访问Hero类中的函数。

<ul>
  <li *ngFor="let hero of myHeroes">
    {{hero.someClassFunction()}}
  </li>
</ul>

这会导致错误:self.context.$implicit.someClassFunction()因为英雄没有投放到英雄级别。我该怎么做?

1 个答案:

答案 0 :(得分:4)

您可以使用public void onClick(View v){ click(v); } public void click(View v){ int id = v.getId(); // and so on } 上的列表或对象功能从数据库中获取对象或列表。你有AngularFireDatabase个预定义(不是自定义)类的对象数组。

您必须手动将从FirebaseListObservable中的数据库获取的结果映射到自定义类的对象数组。

我想你从数据库中获取英雄的功能如下:

FirebaseListObserver

您可以将结果映射到名为Heroes的自定义类的数组中。您可以使用lambda表达式或将该函数作为参数传递(此示例)。

myHeroes(): FirebaseListObservable<Hero[]> {
  return this.db.list('heroes');
}

如果您收到地图不是函数的错误,请添加myHeroes(): Observable<Hero[]> { return this.db.list('heroes').map(Hero.fromJsonList); }

在Hero类中添加以下两个静态函数:

import "rxjs/add/operator/map";