我有一个带角度的应用程序,它在成功登录工作后显示菜单。
所以我有GlobalEventsManager
@Injectable()
export class GlobalEventsManager {
private _showNavBar: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(null);
public showNavBarEmitter: Observable<boolean> = this._showNavBar.asObservable();
constructor() {}
showNavBar(ifShow: boolean) {
this._showNavBar.next(ifShow);
}
}
在菜单组件中
this.globalEventsManager.showNavBarEmitter.subscribe((mode)=>{
if (mode !== null) {
this.showNavBar = mode;
}
});
并在登录
this.globalEventsManager.showNavBar(true);
this.router_.navigate(['welcome']);
我把菜单放在app.component
中<app-menu></app-menu>
<router-outlet></router-outlet>
所以菜单效果很好,但刷新页面菜单消失后,在控制台日志中我得到console.log(模式)null。
那我怎么能解决这个问题呢,谢谢你
答案 0 :(得分:0)
将页面刷新_showNavBar
值再次设置为null
后,这是正常的。这是因为整个GlobalEventsManager
再次运行。要解决此问题,您需要检查用户是否已登录(例如GlobalEventsManager
中的内部构造函数,然后再次设置_showNavBar
值。
检查用户是否登录的最佳位置是一些全局组件。