Geo*_*off 6 javascript firebase firebase-realtime-database angularfire2
下面的代码工作,它应该监听节点中的更改并执行一个函数,但现在出现错误:
ncaught TypeError: Object(...) is not a function
at SwitchMapSubscriber.eval [as project] (changes.js:7)
Run Code Online (Sandbox Code Playgroud)
所以,在我的angular2组件中,我有:
private subscriptions = new Subscription();
registered: AngularFireList<any>;
constructor(private _af: AngularFireDatabase){
this.registered = _af.list('/registered');
}
ngOnInit() {
this.subscriptions.add(
this.registered.valueChanges().subscribe(
res => {
console.log("the value has changed");
}
)
);
}
Run Code Online (Sandbox Code Playgroud)
所以我在哪里出错,因为得到上面的错误指向:
angular2fire/database/list/changes
Run Code Online (Sandbox Code Playgroud)
我需要我的代码做的是在firebase节点发生更改并登录到控制台时进行监听
订阅也已定义为:
private subscriptions = new Subscription();
Run Code Online (Sandbox Code Playgroud)
将它添加到订阅然后我可以使用onDestroy生命周期并防止内存泄漏,如下所示
ngOnDestroy() {
this.subscriptions.unsubscribe();
}
Run Code Online (Sandbox Code Playgroud)
这是当今的一个热门问题。请升级rxjs 5到版本6。
发生这种情况是由于AngularFire. 升级后,该功能应按预期执行。
升级使用npm install rxjs@6 rxjs-compat@6 --save:(推荐)
或者回滚(不推荐)使用:
npm uninstall angularfire2
npm install angularfire2@5.0.0-rc.4
npm uninstall firebase
npm install firebase@4.8.0
Run Code Online (Sandbox Code Playgroud)
请参阅rxjs官方迁移文档,了解操作方法以及有关 5 和 6 之间更改的更多详细信息。