我与Firebase开发了Ionic 3.9聊天,并且出现以下错误:
TypeError:this.db.list(...)。subscribe不是函数
这是我的代码:
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { AngularFireDatabase } from 'angularfire2/database';
@IonicPage()
@Component({
selector: 'page-consersation',
templateUrl: 'conversation.html',
})
export class ConversationPage {
username: string = '';
message: string = '';
_chatSubscription;
s;
messages;
constructor(public db: AngularFireDatabase,
public navCtrl: NavController, public navParams: NavParams) {
this.username = this.navParams.get('username');
this._chatSubscription = this.db.list('/conversation').subscribe( data => {
this.messages = data;
});
}
sendMessage() {
this.db.list<any>('/conversation').push({
username: 'romain',
message: this.message
}).then( () => {
// message is sent
});
this.message = '';
}
}
你能帮我吗?
答案 0 :(得分:0)
在this.db.list('/conversation').subscribe(
中,您在.list(...)
和.subscribe(...
之间丢失了一些东西
您缺少的是.valueChanges()
或.snapshotChanges()
...您可以在the AngularFire2 documentation here上了解差异。
我通常最常使用.valueChanges(),因此对于一个带有.valueChanges()的快速示例,您的代码将是:
this._chatSubscription = this.db.list('/conversation').valueChanges().subscribe( data => {
this.messages = data;
);
编辑-以下更正了代码。不应将变量设置为等于整个.subscribe
...定义您的指针/监听器,然后分别进行订阅。
this._chatSubscription = this.db.list('/conversation').valueChanges()
this._chatSubscription.subscribe( data => {
this.messages = data;
);
第二次编辑-OP发布新的错误消息作为答案。 该新错误似乎是由于版本冲突引起的-请查看this question with multiple possible solutions。
答案 1 :(得分:0)
遇到以下错误polyfills.js:3 Uncaught TypeError: Object(...) is not a function...
时,请尝试以下代码:
this._chatSubscription = this.db.object('/conversation').valueChanges().subscribe(data => {
this.messages = data;
});