【发布时间】:2017-11-01 20:48:36
【问题描述】:
我有一个具有身份验证系统的 Angular 应用程序。在导航菜单中,我有登录、注销和显示用户名的文本。它工作得很好,但是,当用户登录时,我仍然看到相同的导航栏。登录应该消失并且注销以及用户名文本应该在那里。但事实并非如此。它们仅在用户刷新页面时才存在。我不知道我错过了什么。
这是我的navmenu.component.html
<li *ngIf="!currentUser"><a [routerLink]="['/login']"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
<li *ngIf="currentUser"><a (click)="logout()"><span class="glyphicon glyphicon-log-out"></span> Logout</a></li>
<li *ngIf="currentUser"><a><span class="glyphicon glyphicon-user"></span> {{ currentUser.firstName }} {{ currentUser.lastName }}</a></li>
这是我的navmenu.component.ts 代码:
import { Observable } from 'rxjs';
import { User } from './../../models/user';
import { Router } from '@angular/router';
import { AuthService } from './../../services/auth.service';
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'nav-menu',
templateUrl: './navmenu.component.html',
styleUrls: ['./navmenu.component.css']
})
export class NavMenuComponent implements OnInit {
currentUser: User;
ngOnInit() {
this.currentUser = JSON.parse(localStorage.getItem('currentUser') || '');
}
constructor(private authService: AuthService, private router: Router) { }
logout() {
this.authService.logout();
this.router.navigate(['/home']);
}
}
最后,这是我的app.component.html 文件的样子:
<nav-menu></nav-menu>
<router-outlet></router-outlet>
【问题讨论】:
-
fngOnInit 方法只执行一次。您如何假设 NavMenuComponent 被通知用户已登录?
标签: asp.net angular web navbar