菜单组件(只有在成功登录后才能看到)
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { AuthService } from '../../services/auth.service';
@Component({
selector: 'app-menu',
templateUrl: './menu.component.html'
})
export class MenuComponent implements OnInit {
public isLoggedIn = false;
constructor(private authService: AuthService, public router: Router) {
this.isLoggedIn = authService.loggedIn();
}
ngOnInit() {
}
}
菜单组件模板
<nav role="navigation" *ngIf="isLoggedIn">
<ul><li>Admin Menu Item</li></ul>
</nav>
主要内容组件
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-main-content',
templateUrl: './main-content.component.html'
})
export class MainContentComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
主要内容组件模板
<div class="content">
<div class="wrapper">
<div class="row">
<app-menu></app-menu>
</div>
</div>
</div>
应用组件模板
我正在考虑使用*ngIf
指令来处理菜单组件的可见性,具体取决于用户是否已登录。从上面的代码可以看出,属性isLoggedIn
被赋予了来自loggedIn()
函数的布尔值。
我认为这一切都非常简单,但问题是菜单组件在成功登录后没有显示,我将不得不刷新浏览器才能看到菜单。不太清楚为什么会出现这种情况。有什么建议或想法吗?
答案 0 :(得分:0)
这是因为菜单组件中的loggedIn值仅在ngOnInit中设置。
改为使用getter,如下所示:
export class MenuComponent implements OnInit {
public get loggedIn() { return this.authService.loggedIn(); }
constructor(private authService: AuthService, public router: Router) {
}
ngOnInit() {
}
}