我正在使用 angularfire-beta6。假设我有一个 myHeroes:FirebaseListObservable<Hero[]>
并在我的模板中将它与 async 管道一起使用我无法访问 Hero 类中的函数。
<ul>
<li *ngFor="let hero of myHeroes">
{{hero.someClassFunction()}}
</li>
</ul>
这会导致错误:self.context.$implicit.someClassFunction()
因为 hero 没有被转换为 Hero 类。我该怎么做?
最佳答案
您可以使用 AngularFireDatabase
上的列表或对象函数从数据库中获取对象或列表。您有 FirebaseListObserver
,其中包含一组预定义(不是您的自定义)类的对象。
您必须手动将从 FirebaseListObservable 中的数据库获得的结果映射到自定义类的对象数组。
我想你从数据库中获取你的英雄的函数看起来像这样:
myHeroes(): FirebaseListObservable<Hero[]> {
return this.db.list('heroes');
}
您可以将结果映射到名为 Heroes 的自定义类的数组中。您可以使用 lambda 表达式或将函数作为参数传递(本示例)。
myHeroes(): Observable<Hero[]> {
return this.db.list('heroes').map(Hero.fromJsonList);
}
如果您收到 map 不是函数的错误,请添加 import "rxjs/add/operator/map";
在 Hero 类中添加这两个静态函数:
static fromJsonList(array): Hero[] {
return array.map(Hero.fromJson);
}
//add more parameters depending on your database entries and Hero constructor
static fromJson({id, name}): Hero {
return new Hero(id, name);
}
关于angular - 将 FirebaseListObservable 结果转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40632308/