2017-06-20 137 views
0

我有一個角度的應用程序,它顯示菜單成功登錄後工作很好。
刷新頁面後菜單消失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(模式)爲空。

那麼我怎樣才能解決這個問題,並感謝

+0

你在哪裏把你的菜單,內部組件或路由器outler? –

+0

@ThienHoang我編輯問題 – Akram

回答

0

這是正常的頁面刷新後_showNavBar值被設置爲null一次。這是因爲整個GlobalEventsManager已經再次運行。爲了解決這個問題,你需要檢查用戶是否登錄(例如在GlobalEventsManager的構造函數中,然後再設置_showNavBar值。

檢查用戶是否登錄的最佳位置是全局的組件