gpt4 book ai didi

angular - 将 FirebaseListObservable 结果转换为对象

转载 作者:太空狗 更新时间:2023-10-29 18:21:00 26 4
gpt4 key购买 nike

我正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com