Angular 尝试从firebase检索列表时出现离子运行时错误
我是个新手 我正在跟随一个关于 但与教程相比,我使用的是截至发帖时的最新模块 节点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: 通过更改语法解决了语法错误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
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();
}
}