我正在用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有什么问题吗?