Angular 接收消息的角度侦听路由器(valueChanges())

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:当用户滚动页面时。假设用户从未进入消息页面,因此,由于这个原因,每次用户更改页面时,它都不

应用程序中有一个聊天区,我想监听用户的路由器并接收消息。当用户不在/main/tabs/message“或“/main/tabs/message/chat/:uid”中时,请订阅listenMessages,否则将取消订阅。 此代码正在工作,但我有2个问题

问题1:我无法阅读:uid如何修复它(main/tabs/message/chat/biFAvWnJUNX4p3IHyFjHBN8ES3X2

问题2:当用户滚动页面时。假设用户从未进入消息页面,因此,由于这个原因,每次用户更改页面时,它都不会取消订阅和订阅。我使用controlPage值解决了这个问题,这是一个合理的解决方案吗?(如工作)

这是我的auth.service.ts:

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
      })
    }