Angular 接收消息的角度侦听路由器(valueChanges())
应用程序中有一个聊天区,我想监听用户的路由器并接收消息。当用户不在/main/tabs/message“或“/main/tabs/message/chat/:uid”中时,请订阅listenMessages,否则将取消订阅。 此代码正在工作,但我有2个问题 问题1:我无法阅读:uid如何修复它(main/tabs/message/chat/biFAvWnJUNX4p3IHyFjHBN8ES3X2) 问题2:当用户滚动页面时。假设用户从未进入消息页面,因此,由于这个原因,每次用户更改页面时,它都不会取消订阅和订阅。我使用controlPage值解决了这个问题,这是一个合理的解决方案吗?(如工作) 这是我的auth.service.ts:Angular 接收消息的角度侦听路由器(valueChanges()),angular,firebase,firebase-realtime-database,Angular,Firebase,Firebase Realtime Database,应用程序中有一个聊天区,我想监听用户的路由器并接收消息。当用户不在/main/tabs/message“或“/main/tabs/message/chat/:uid”中时,请订阅listenMessages,否则将取消订阅。 此代码正在工作,但我有2个问题 问题1:我无法阅读:uid如何修复它(main/tabs/message/chat/biFAvWnJUNX4p3IHyFjHBN8ES3X2) 问题2:当用户滚动页面时。假设用户从未进入消息页面,因此,由于这个原因,每次用户更改页面时,它都不
controlpage = false
listenMessages : Subscription
constructor(private afAuth:AngularFireAuth,private db :AngularFireDatabase,private router:Router,private AlertCtrl : AlertController)
{
this.router.events.pipe(
filter(event => event instanceof NavigationEnd)
).subscribe((event: NavigationEnd) => {
if(event.url == "/main/tabs/message" || event.url=="/main/tabs/message/chat/:uid"){
this.unsubscribeMessages()
console.log("unsubscribe : "+event.url);
}
else if(this.controlpage==false){
this.subscribeMessage()
console.log("subscribe : "+event.url);
}
});
}
unsubscribeMessages(){
this.listenMessages.unsubscribe()
this.controlpage = false
}
subscribeMessage(){
this.afAuth.onAuthStateChanged(user=>{
this.listenMessages= this.db.object("/users/"+user.uid+"/messages/").valueChanges().subscribe(a=>console.log("This is work"))
this.controlpage = true
})
}