angular - 登录后重新加载 Angular 6 组件
问题描述
我有一个菜单,应该在用户登录后更新。菜单添加在 app.component 的 html 中。
菜单是使用以下代码生成的。
<li *ngFor="let item of menuitems">
<a class="nav-link" [routerLink]="[item.url]" routerLinkActive="active" {{item.name}}</a>
</li>
用户登录后更改菜单项。我想在用户登录时强制页面重新加载(理想情况下只是该组件)。当我进行手动刷新时,我会得到新菜单。
该组件被添加到主组件。随着使用
<app-menu></app-menu>
菜单项是这样定义的;
async ngOnInit() {
this.menuitems = await this.menus.getMenu();
}
无论用户是否登录,菜单服务都会返回元素。
我想我必须在登录成功后更新菜单组件,但我不知道如何做到这一点。
解决方案
这可能是最简单的方法,只需使用 *ngIf
来显示或隐藏元素,每次切换状态时,组件都会重新创建并ngOninit
再次运行
示例案例
模板
<div>
<button (click)="login()">login ♂️</button>
</div>
零件
toggle = true;
constructor(private m:MenuService) {
}
login(){
console.log('logging');
this.toggle = false;
this.m.menus = ['admin','log out']; // update menus result
setTimeout(() => this.toggle = true,1500); // api call
}
推荐阅读
- python - 管理多个 Python 版本
- css - CSS:如何设置动态项目数的最后一个网格行?
- php - 我在编写生成的攻击时不知所措(php 游戏内攻击)
- react-native - 如何在启动时在特定浏览器中打开浏览器开发工具?
- javascript - 帖子中的数组转换为字符串
- javascript - lance-gg 如何知道是否加载客户端
- kubernetes - Kubernetes POD 在不同主机上运行,无法建立 TCP 连接
- kdb - QPad64's (QInsightPad's) 输出窗口
- c++ - 请解释为什么这些逻辑运算符不能像在 CPP 中那样工作
- python - re.findall() 包含除某些文本之外的所有内容