Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 尝试从firebase检索列表时出现离子运行时错误_Angular_Typescript_Firebase_Ionic Framework_Angularfire2 - Fatal编程技术网

Angular 尝试从firebase检索列表时出现离子运行时错误

Angular 尝试从firebase检索列表时出现离子运行时错误,angular,typescript,firebase,ionic-framework,angularfire2,Angular,Typescript,Firebase,Ionic Framework,Angularfire2,我是个新手 我正在跟随一个关于 但与教程相比,我使用的是截至发帖时的最新模块 节点v.8.94 npm 5.6.0 cordova@8.0.0 ionic@3.19.1 rxjs@5.5.6 angularfire2@5.0.0-rc.6 firebase@4.9.0 我遇到了如下屏幕截图所示的问题, 在逃 在创建这篇文章之前,我尝试了类似文章中提出的各种解决方案,但都没有用。请帮忙 home.ts home.html 更新1: 通过更改语法解决了语法错误 posts: AngularFire

我是个新手

我正在跟随一个关于

但与教程相比,我使用的是截至发帖时的最新模块

节点v.8.94 npm 5.6.0 cordova@8.0.0 ionic@3.19.1 rxjs@5.5.6 angularfire2@5.0.0-rc.6 firebase@4.9.0 我遇到了如下屏幕截图所示的问题,

在逃 在创建这篇文章之前,我尝试了类似文章中提出的各种解决方案,但都没有用。请帮忙

home.ts

home.html

更新1: 通过更改语法解决了语法错误

posts: AngularFireList<any[]>;

但仍然得到相同的运行时错误

更新2: 试着发表评论 职位:AngularFireList

应用程序运行时没有出错。但这不是一个解决方案。

您是否尝试过:

posts: AngularFireList<{}>;

来自AngularFire的GetPosts返回通用AngularFireList。通过定义AngularFireList,您可以说您的列表元素/项将是T类型。现在,由于AngularFireList已经是类似于可枚举数组的类型,您应该使用以下内容来定义它:

posts: AngularFireList<{}>;

这是说你在期待某个对象。这和写任何东西都一样。您将其定义为数组列表或与AngularFire service returns类型不匹配的二维数组。

找到了更好的方法

home.ts

firebase-service.ts


将其更改为posts:AngularFireList;已解决语法错误,但生成时出现运行时错误。这是一个相当长的错误。我用截图更新了这个问题。在你的HTML中,你在某处使用异步管道,但管道之前的对象不是异步的。拆下管道,应该没问题。对不起,我的错,我没有意识到这是两个问题。如果你还有其他问题,请问另一个问题,不要把它钉在当前已回答问题的末尾。@MikeMcCaughan总体上是同一个问题,只是用更多信息更新问题。
posts: AngularFireList<any[]>;
posts: AngularFireList<{}>;
posts: AngularFireList<{}>;
posts: AngularFireList<{}>;
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';  
import { Observable } from 'rxjs/Observable';
import { FirebaseService } from './../../providers/firebase-service/firebase-service';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  posts: Observable<any[]>;

  constructor(public navCtrl: NavController, public firebaseService: FirebaseService) {
        this.posts = this.firebaseService
  .getPosts() // DB LIST
  .map(changes => {
    return changes.map(c => ({
      key: c.payload.key, ...c.payload.val()
    }))
  });
  }
}
import { Injectable } from '@angular/core';
import { AngularFireDatabase } from 'angularfire2/database';

@Injectable()
export class FirebaseService {
  private postsRef = this.db.list<any>('/posts');

  constructor(public afd: AngularFireDatabase) {}

  getPosts() {
    return this.postsRef.snapshotChanges();
  }
}