我有一个问题,在路由器的功能navigate,因为一个变化的角度2版本。我将版本从2.0.0-rc.1升级到2.0.0-rc.3,因此我不得不将路由器的版本更改如下:
@转角/路由器:2.0.0-rc.1 to 3.0.0-α7
我创建了一个包含所有路径的文件。
export const routes:RouterConfig = [
{ path: '', component: Home, terminal: true },
{ path: 'home', component: Home },
{ path: 'login', component: Login },
...然后,我将路由添加到引导函数中。
bootstrap(AppComponent, [
AppWebservice,
HTTP_PROVIDERS,
APP_ROUTER_PROVIDERS,
provide(Config, {useClass: Config})
]).catch(err => console.error(err));我有一个包含以下代码的组件:
ngOnInit() {
console.log('isLoggedin: ' + isLoggedin())
if (isLoggedin()) {
this.router.navigate(['/home']);
} else {
this.router.navigate(['/login']);
}
}在这个组件中,代码this.router.navigate(['/login']);与2.0.0-rc.1很好地工作,但现在它不适用于新版本。我检查了isLoggedin()的值,当它的值为false时,我仍然被重新路由到主页,而不是登录页面。
有人知道路由器为什么不能正常工作吗?
发布于 2016-07-07 14:25:43
这是一个基本的例子,说明你应该如何为你的路线设置一个守卫。
在您需要重定向的路由/s上添加canActivate: [HomeGuard]。
您将需要创建一个服务,以便将isLoggedin注入到保护程序中。
当然也创造了可注射的护卫军。
如果你还有什么问题请告诉我。
export const routes:RouterConfig = [
{ path: '', component: Home, terminal: true, canActivate: [HomeGuard]},
{ path: 'home', component: Home },
{ path: 'login', component: Login },
@Injectable()
export class HomeGuard implements CanActivate {
constructor(provate isLoggedinService: IsLoggedinService, private router: Router) {}
canActivate() {
console.log('this.isLoggedinService.isLoggedin: ' + this.isLoggedinService.isLoggedin())
if (this.isLoggedinService.isLoggedin()) {
this.router.navigateByUrl('home');
return false;
} else {
this.router.navigateByUrl('login');
return false;
}
}
}https://stackoverflow.com/questions/38241509
复制相似问题