angular - Angular 2 Typescript 在登录/注销时重新加载组件
问题描述
目前,如果我以管理员身份登录,我的导航组件上有一个管理部分。如果我注销并使用非管理员用户登录,管理员部分仍然在我的侧导航中可见)。如果我进行硬刷新 or Location.reload()
,它就会消失。我宁愿在不刷新页面的情况下重新加载侧导航组件。login()
除了andlogout()
函数所在的组件之外,如何重新加载组件?
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">
解决方案
我不知道你的user
var 是什么样子,如果它是组件绑定的,那就是你的问题。您希望将其移至服务并在登录时对其进行更新/设置。
推荐阅读
- filemaker - 遍历字段中的每条记录并修剪空白
- sql - SQL 上的数据问题
- java - Olingo Odata Java 中的自动扩展选项
- git - GitKraken 不会忽略 .gitignore 中的缓存文件
- git - Git rebase 挂出并创建许多 sh.exe 进程
- python - Python setuptools/distutils 自定义构建来自 GO 源的 `extra` 包
- javascript - 无法从节点标准输入中访问导入的节点模块
- azure-service-fabric - 本地服务结构添加节点和节点类型关联
- node.js - 启动节点 js npm 时出错
- android - Android Studio - ActionBar 未显示在预览中