如何使用带有 angularfire2 版本 5 的 firebase 获取数据?

xRuhRohx

我一直在遵循一些关于从 angularfire2 v4 到 v5 的更新过程的指南,但无济于事。我似乎无法在需要的地方获取数据。我可以从 firebase 获取数据并将其显示在控制台中,但由于某种原因,我无法让它显示在我的 ngFor 循环中。有一种方法可以让它显示出来,但我也收到一个错误,所以我确定它是错误的。

我也试过完全按照这里的方式设置我的代码,什么也没有。https://alligator.io/angular/cloud-firestore-angularfire/

我得到的错误是

错误 TS2322:类型“{}[]”不可分配给类型“Chat[]”

继续我的代码。

聊天服务.ts

import { Injectable } from '@angular/core';
import { AngularFireDatabase } from 'angularfire2/database';
import { Chat } from './../models/chat';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/take';

@Injectable()
export class ChatService {

  constructor(
    private db: AngularFireDatabase
  ) { }

  getAll() {
    return this.db.list('/chats');
  }

聊天列表.component.ts

import { Component, OnInit } from '@angular/core';
import { AuthService } from './../../../admin/services/auth.service';
import { Observable } from 'rxjs/Observable';
import { AppUser } from './../../models/app-user';
import { ChatService } from './../../services/chat.service';
import { Chat } from './../../models/chat';
import * as firebase from 'firebase';

@Component({
  selector: 'chat-list',
  templateUrl: './chat-list.component.html',
  styleUrls: ['./chat-list.component.css']
})
export class ChatListComponent implements OnInit {
  appUser: AppUser;
  chats: Chat[] = [];

  constructor(
    private auth: AuthService,
    private chatService: ChatService
  ) {
    auth.appUser$.subscribe(appUser => this.appUser = appUser);

// This is where the error is showing up --------------|__ERROR__|
    chatService.getAll().valueChanges().subscribe(c => this.chats = c);
  }

  async ngOnInit() {
  }
}

聊天列表.component.html

<li *ngFor="let c of chats" class="list-group-item">
   {{ c.name }}
</li>
伊本杰伦

尝试使用this.db.list<Chat>('/chats').valueChanges();.

我会在可以帮助检测编译错误时放置返回类型,这将有助于在您的服务中放置返回类型。

getAll(): Observable<Chat[]> {
    return this.db.list<Chat>('/chats').valueChanges();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用angularfire2(v5)和ngrx效果从Firebase获取列表作为数组

如何从Firebase检索数据以传递到angularfire2 / version-5中的数组

使用 angularfire2 显示来自 firebase 的数据

Firebase 5 AngularFire2 5:在数据库中查找键

使用AngularFire2(Angular2 rc.5)访问firebase.storage()

这个使用Angularfire2从Firebase数据库检索列表的示例如何工作?

使用angularfire2在Firebase实时数据库上查询数据关系

Angular 4,angularfire2,元数据版本不匹配

使用 Angularfire2 从 Firestore 获取的数据分组

如何使用 angularfire2 更新 firebase 对象的子级

如何使用angularfire2将视频上传到Firebase?

AngularFire2的Firebase数据库事务

Angularfire2 Firestore 不从 Firebase 中提取数据

Angularfire2:如何从Firebase存储中检索文件内容

使用AngularFire2处理Firebase权限错误

使用AngularFire2将文件上传到Firebase存储

使用 AngularFire2 的 Ionic Firebase 应用程序

现在我有最新的 angularfire2 版本。我如何降级到以前的版本?

使用 AngularFire2 在 Angular 5 应用程序中读取和更新以下格式的 Fire-base 数据

Angularfire2身份验证:如何获取当前用户?

使用 AngularFire2 获取对项目的引用

如何使用angularfire2 valuechanges方法获取随机数据

如何在Angular2中使用AngularFire2或Firebase进行多位置“删除”

Angular Material 2数据表是否连接到AngularFire2或Firebase服务?

使用 Angular4 和 Angularfire2 (v4) 在 Firebase 中获取用户身份验证配置文件信息

如何使用AngularFire2在Firebase中更新用户?

如何使用 AngularFire2 和 Firebase Storage 上传文件数组?

如何使用angularfire2检查孩子是否存在于firebase列表中

在不同步 angularfire2 的情况下查询 Firebase 数据库