小编Aay*_*rma的帖子

如何处理用户登录服务以获取用户信息和注销状态

用户从“/登录”登录到仪表板“/”后,我试图将注销元素添加到菜单中,

首先,我尝试将身份验证服务添加到仪表板组件并像这样在组件初始化(ngOnInIt)上更新用户变量

    this.authService.getUser().subscribe(
       (data) => {
         if (data !== null) {
           this.username = data.local.username;
         }
       });
Run Code Online (Sandbox Code Playgroud)

但是我的根组件在从“/login”页面重定向后不执行 ngOnInit,因此我的用户名也没有被检索到。

第二次,我尝试使用 Observable 进行更改检测,使usernameauth Service 中的变量 Observable

user$: Observable<string> = this.getUser().map( data => {
  if (data !== null) {
   return data.local.username;
  }
 });

getUser() {
return this.http.get('/api/user')
  .catch( (error: any) => {
    return Observable.throw( error.toString() || ' :server error');
});
Run Code Online (Sandbox Code Playgroud)

}

在我的仪表板中,我注入了这个身份验证服务并调用了 *ngIf="authService.user$ | async"

但是我的结果是一样的,我必须两次重新加载我的页面才能在菜单中显示注销字符串。

这是我第一个使用 angular 的个人项目,请不要犯任何小错误,并花时间解释一下。谢谢

angular

2
推荐指数
1
解决办法
5642
查看次数

标签 统计

angular ×1