菜单在刷新页面Angular后消失

时间:2017-06-20 11:04:23

标签: angular

我有一个带角度的应用程序,它在成功登录工作后显示菜单。

所以我有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。

那我怎么能解决这个问题呢,谢谢你

1 个答案:

答案 0 :(得分:0)

将页面刷新_showNavBar值再次设置为null后,这是正常的。这是因为整个GlobalEventsManager再次运行。要解决此问题,您需要检查用户是否已登录(例如GlobalEventsManager中的内部构造函数,然后再次设置_showNavBar值。

检查用户是否登录的最佳位置是一些全局组件。