我像这样从 NGRX/store 获得预订列表,数据正确输入,但在页面重新加载时消失。我必须更改路线才能将其取回。
ngOnInit() {
this.store.select(state => state.authState.profile).subscribe(profile => {
this.profile = profile;
if (this.profile) {
this.userId = this.profile.$key;
}
});
if (this.userId) {
this.reservations$ = this.reservationService.loadUserReservations(this.userId);
}
}
ngOnChanges() {
if (this.userId) {
this.reservations$ =
this.reservationService.loadUserReservations(this.userId);
}
}
不确定这是否足以说明问题的代码。
在我的身份验证服务中
this.auth$.authState.subscribe(user => {
if (user) {
const userData = user;
const userRef = db.object("users/" + userData.uid);
const dataToSet = {
displayName: userData.providerData[0].displayName,
email: userData.providerData[0].email,
photoURL: userData.providerData[0].photoURL,
providerId: userData.providerData[0].providerId,
registeredAt: new Date()
};
userRef.take(1).subscribe((user) => {
if (user.$exists()) {
// console.log('user exists', user);
this.store.dispatch(this.authActions.updateUserInfo(user));
} else {
// console.log('user does not exists');
userRef.set(dataToSet)
.then((result) => {
// console.log(result)
})
.catch((error) => {
// console.log(error);
});
}
});
// console.log('hello user', user);
this.store.dispatch(this.authActions.loginSuccess(user));
} else {
this.store.dispatch(this.authActions.logOutUser());
}
});
}
我正在使用 Firebase 并订阅 authState 更改。当用户登录时,我发送一个操作来更新商店,我只使用 authState.profile 来过滤用户的预订并且所有工作正常。我在 ngOnInit() 上设置了 observable reservations$。