在 Angular 2 中,您可以@CanActivate
为组件指定一个注释,您可以在其中确定该组件是否应该被激活。它不是接口的原因是因为在组件实例化之前调用了回调。问题是,我想不出一种方法将依赖项注入到该回调中。而且我需要我的服务来告诉我我是否登录(以及以谁登录)来确定是否允许路由到特定组件。
如何将依赖项注入 @CanActivate 回调?我正在使用 ES5,这不起作用:
app.ListsComponent = ng.router.CanActivate([
app.SessionService,
function(session, instruction) {
console.log(session);
return true;
}
])(app.ListsComponent);
编辑:或者,我可以routerOnActivate
在组件上使用生命周期事件,this.router.navigate
如果用户不应该在那里,我可以使用它来将用户送走。缺点是它会破坏浏览器历史记录:如果每次您到达特定 URL 时我都会异步重定向您,您就不能非常有用地使用浏览器中的后退按钮。有没有办法router.navigate
使用history.replaceState
而不是history.pushState
这种情况?