从登录页面路由到仪表板时未调用应用程序组件

时间:2018-04-06 04:49:19

标签: angular angular2-routing

我在成功身份验证时有一个登录组件

在login.component.ts中 login() { this.loading = true; this.authenticationService.login(this.model.username, this.model.password) .subscribe( data => { this.router.navigate([this.returnUrl]); }, error => { this.alertService.error(error); this.loading = false; }); }

我在LocalStorage中保存UserObject,然后

我使用

重定向到信息中心页面

this.router.navigate

在My App.component.ts中,我检查UserObject是否在LocalStorage

constructor(private router: Router) { if (localStorage.getItem('currentUser')) { this.userLoggedIn = true; const user = JSON.parse(localStorage.getItem('currentUser')); this.userObject = user['return_object']; } }

我在app.component.html中使用userLoggedIn变量有条件地显示标题和左侧导航,但由于某种原因,App.component.ts中的代码没有执行,有人可以指向正确的方向。

1 个答案:

答案 0 :(得分:3)

你可以写这样的代码,

constructor(router:Router) {
  router.events.subscribe(event:Event => {
    if(event instanceof NavigationStart) {
         //you code for checking and navigation
    }
  });
}

建议是订阅路由事件并基于它来执行操作,因为构造函数只有在组件被创建时才被执行一次直到被销毁。