angular - 显示来自 angularfire2 查询的单个项目

标签 angular rxjs angularfire2

有没有什么方法可以在不使用 ngFor 循环的情况下显示来自 angularfire2 的查询?

this.user = this.af.database.list('items',{
  query: {
    orderByChild: 'id',
    equalTo: id
  }
})

我试过用所有这些输出 HTML 但只有循环有效

{{user}}
{{user | async }}

{{user.name}}
{{user.name | async }}

<h1>{{ (user | async)?.name }}</h1>

<ul>
   <li *ngFor="let u of user  | async" >{{u.name}}</li>
</ul>

数据集是

{
  "items" : {
    "id-1" : {
      "id" : 1,
      "name" : "Gambit"
    },
    "id-2" : {
      "id" : 2,
      "name" : "Wolverine"
    }
  },
  "list" : "bob"
}

还可以通过将 json 输出到 html 来简单地调试 angularfire,这在 angularfire2 中似乎不起作用,还有其他方法吗?

最佳答案

你可以这样做:

this.user = this.af.database.list('items',{
  query: {
    orderByChild: 'id',
    equalTo: id
  }
}).map((items: Array<any>) => items.find(item => item.id === id))

但是我建议重组你的数据,如果你有 id 你应该能够直接得到项目:

this.user = this.af.database.object(`items/${id}`)

查看官方文档:Structure Your Database更多详情...

关于angular - 显示来自 angularfire2 查询的单个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40038701/

相关文章:

javascript - 在 RxJS 中有条件地选择 observable

RxJS 教程不需要熟悉响应式(Reactive)编程概念或 Rx .NET?

angular - canActivate 在订阅更改时不响应 Angular 2 路由器 AngularFire2

angular - 如何在 Angular 6/5/4 中没有父子关系的情况下将组件 A 之间的数据传递给组件 B

angular - 如何在开发模式下为 Angular 应用程序提供服务?

angular - 在使用 Angular 在 Firebase 中上传之前调整大小和压缩图像质量

html - 将第二个全长行添加到垫表中的每个垫行

angular - 类型 'subscribe' 上不存在属性 '() => Observable<any>'

angular - 对使用 AngularFireAuth 和模拟 authState 的服务进行单元测试

javascript - 返回 Promise 的 AngularFire2 方法不适用于 fromPromise