【问题标题】: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。