我是角色的新手2.我已在共享文件夹中定义了我的服务,并在app.module.js提供程序部分添加了这些服务。我使用Behavioral Subject来保存用户状态。当我登录时,我用用户更新我的行为主题,并在侧栏模板中显示用户名。但是当我刷新页面或按ctrl + r然后行为主题回到空用户并在侧栏模板中我的用户名消失。当我刷新页面或按ctrl + r时,我的行为主体没有保持其值。我被困在这里kinldly指导我这里的问题
UserService:-
private currentUserSubject = new BehaviorSubject<User>(new User());
public currentUser = this.currentUserSubject.asObservable().distinctUntilChanged();
private isAuthenticatedSubject = new BehaviorSubject<boolean>(false);
public isAuthenticated = this.isAuthenticatedSubject.asObservable();
loginUser(email, password): Observable<User> {
const route = '/login'
return this.apiService.post('/user' + route, {email, password})
.map(
data => {
this.saveUser(data.user);
return data;
}
);
}
saveUser(user: User) {
this.currentUserSubject.next(user);
this.isAuthenticatedSubject.next(true);
}
In SideBarComponent:--
export class SideBarComponent implements OnInit {
user: User;
constructor(private userService: UserService,
private router: Router) {
this.userService.currentUser.subscribe(
(userData) => {
this.user = userData;
}
)
}
}
app.module.ts:
@NgModule({
imports: [
BrowserModule,
RouterModule.forRoot(AppRoutes),
SidebarModule,
NavbarModule,
FooterModule,
SharedModule,
],
declarations: [
AppComponent,
AdminLayoutComponent,
AuthLayoutComponent,
],
providers: [UserService],
bootstrap: [ AppComponent ]
})
export class AppModule { }
答案 0 :(得分:0)
当我们刷新页面角度引导应用程序时,由于我的单例再次初始化。因此,我的行为会使数据丢失。