登录/注销时Angular 2 Typescript重新加载组件

时间:2018-07-06 15:36:35

标签: angular typescript

当前,如果我以管理员身份登录,则导航组件上有一个admin部分。如果我注销并以非管理员用户身份登录,则在我的导航栏中仍然可以看到admin部分。如果我进行硬刷新或Location.reload(),它就会消失。我宁愿重新加载side-nav组件而不刷新页面。我该如何重新加载除login()logout()函数所在的组件之外的其他组件?


topnav.component.ts

@Component({
  selector: "app-top-nav"
  //...
})

//...
login() {
    //do login stuff
  },
  error => {
    //do error stuff
  },
  () => {
    this.router.navigate(["/dashboard"]);
  });
}

logout() {
  //do logout stuff...
  this.router.navigate(["/home"]);
}


topnav.component.html

<form *ngIf="!loggedIn()" #loginForm="ngForm" class="navbar-form navbar-right" (ngSubmit)="login()">
  //login form
</form>

<a (click)="logout()"><i class="fa fa-sign-out"></i> Logout</a> //only present when logged in


sidenav.component.ts

@Component({
  selector: "app-side-nav"
  //...
})

export class SideNavComponent implements OnInit {
  //...
}


sidenav.component.html

//...
<ul class='nav navbar-nav' *ngIf="user.userRoleId == UserRoles.Admin">

1 个答案:

答案 0 :(得分:0)

我不知道您的user var是什么样的,如果它的组件绑定,那就是您的问题。您希望将其移至服务并在登录时进行更新/设置。