2016-12-17 2 views
0

Прямо сейчас у меня есть интервал, который проверяет, меняются ли наблюдаемые изменения каждые 1 секунду. Я знаю, что это не самый эффективный способ, но я не могу понять, как слушать изменение состояния и запускать функцию, когда это происходит, непосредственно в компоненте. Вот мой интервал, который у меня сейчас:Как прослушивать наблюдаемые изменения внутри компонента

UPDATE 1: Я теперь с помощью подписки, но это все еще не работает для меня. Я посылаю объект firebase, наблюдаемый из уже подписанного наблюдаемого. Это где моя проблема?

Сервис

private ReadyObs; 

    SetRoom(){ 
    this.Room = this.AngularFire.database.object('/Rooms/ABC1'); 
    this.Room.subscribe(snap => { 
     if(snap.$value !== null){ 
      this.Ready = this.AngularFire.database.object(`/Rooms/${player.room}/Ready`); 
     } 
     } 

    checkReady(){ 
     return this.ReadyObs; 
    } 

Компонент

private ReadyObs=this.main.checkReady(); 

    //Always results with still not ready even though its true 
    this.ReadyObs.subscribe((result) =>{ 
    if(result === true) 
     console.log("Ready to use"); 
    else 
     console.log("Still not ready"); 
    }); 

ответ

1

Если checkReady() возвращается к заметному вы можете подписаться на него, чтобы получить изменения.

this.checkReady() 
    .subscribe(result => { 
    if (result === true) { 
     console.log("Ready"); 
    } else { 
     console.log("Still not ready"); 
    } 
    }, (error) => { 

    }); 
+0

Im пытается это, но по какой-то причине это не работает для меня. Я обновлю свой код –