【问题标题】:How to prevent state loading in angular 2如何防止角度2中的状态加载
【发布时间】:2017-03-27 12:58:58
【问题描述】:

我的组件:

constructor(
        private router: Router
    ) {

        router.events.subscribe((val) => {
            if (val instanceof NavigationStart && !isloggedIn) {
                console.log(val);
            }
        });
    }

如果用户登录navigationStart,如果用户未登录,我想阻止用户加载页面。如何在角度2中做到这一点?

【问题讨论】:

标签: javascript angular typescript angular2-routing


【解决方案1】:

你应该创建AuthGuard 为所有如果没有登录用户不应该登陆的路线设置它。

const routesConfig: Routes = [
   {
       path: 'admin',
       component: AdminLayoutComponent,
       canActivate: [AuthGuard],        
       children: [
           { path: 'dashboard', component: AdminDashboardComponent },            
       ]
   },
   {path: 'admin-login', component: AdminLoginComponent},
   {path: 'login', component: LoginComponent},
   {path: '**', redirectTo: ''}
];

这里是简单的 AuthGuard。

  @Injectable()
  export class AuthGuard implements CanActivate {
      constructor() {}

   canActivate() {
      let user = JSON.parse(localStorage.getItem('user'))

      // here do logic for navigate to login if user don't have local storage...

      return true;
      }
   }

更多信息请查看link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 2017-11-21
    • 1970-01-01
    相关资源
    最近更新 更多