【发布时间】:2020-05-07 14:31:17
【问题描述】:
在我的app.component.html中:
<html>
<head></head>
<body>
<header *ngIf="loggedIn && showHeader"></header>
<router-outlet></router-outlet>
</body>
</html>
在我的 app.component.ts 中:
export class AppComponent {
constructor(private HeaderService: HeaderService, private AuthService: AuthService) { }
get loggedIn(): boolean { return this.AuthService.getUserState(); }
get showHeader(): boolean { return this.HeaderService.getToggleState(); }
}
在我的 header.service.ts 中:
我们创建此服务是因为登录后还有其他特定组件需要隐藏标题。
@Injectable({
providedIn: 'root'
})
export class HeaderService {
showHeader = true;
constructor() { }
setToggleState(state: boolean) {
this.showHeader = state;
}
getToggleState() { return this.showHeader; }
}
现在,在我的login.component 中,标题应该是不可见的。
现在发生的情况是,有短暂的闪烁(似乎在您登录然后注销并返回登录页面时发生),其中标题在隐藏之前是可见的(是的,也会抛出 @987654325 @)。
实现这一目标的最佳方法是什么?我应该默认将showHeader 设置为false 吗?
login.component.ts
export class LoginComponent implements OnInit {
ngOnInit() {
// To hide the header
this.HeaderService.setToggleState(false);
}
}
【问题讨论】: