通过Angular 2服务的Observable在订阅时不会被激活

时间:2016-12-20 03:17:38

标签: angular ionic2 rxjs angularfire2

我正在用Ionic 2构建一个应用程序,使用firebase作为后端并连接angularfire2。我想在身份验证更改状态时尝试更改根页面。

我的服务中返回observable的方法如下所示

getUserData() {
  return Observable.create(observer => {
    this.af.auth.subscribe(authData => {
      if (authData) {
        console.log("Auth Changed");
        observer.next(userData);
      } else {
        observer.error();
      }
    });
  });
}

我在app.conponent文件中调用该服务来更改根页

ngOnInit() {
  this.platform.ready().then(() => {
    this.auth.getUserData().subscribe(data => {
    console.log("ngOnit");
      if (!this.isAppInitialized) {
        this.nav.setRoot(HomePage);
        this.isAppInitialized = true;
      }
      this.user = data;
    }, err => {
      this.nav.setRoot(LoginEmailPage);
    });
  });
}

控制台在页面重置后第一次读取

"Auth Changed"
"ngOnit"

但是经过另一次登录尝试后我才得到

"Auth Changed"

订阅中的方法不会触发。

如果我订阅了另一个observable,它每次都会阻塞ngOnit,所以我觉得它与我创建的observable有关。

我创建的observable有什么问题吗?

0 个答案:

没有答案