我们有什么方法可以从Angular2中的@CanActivate重定向到另一个组件吗?
我的应用程序已启动并运行Angular 2.1.0.路由受路由器保护,canActivate保护.
当将浏览器指向受保护的区域(如"localhost:8080/customers")时,我会像预期的那样重定向到我的登录页面.
但是在成功登录后,我希望被重定向回调用URL(在这种情况下为"/ customers").
处理登录的代码如下所示
login(event, username, password) {
event.preventDefault();
var success = this.loginService.login(username, password);
if (success) {
console.log(this.router);
this.router.navigate(['']);
} else {
console.log("Login failed, display error to user");
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我不知道如何从login方法中获取调用url.
我确实找到了一个关于这个的问题(和答案),但是对它没有任何意义. 登录后Angular2重定向
Angular2路由器 - 任何人都知道如何在app.ts中使用canActivate,以便我可以重定向到主页,如果没有登录
我正在使用打字稿和角度2.
在我的app.ts文件中我的构造函数下的当前尝试:
canActivate(instruction) {
console.log("here - canActivate");
console.log(instruction);
this.router.navigate(['Home']);
}
Run Code Online (Sandbox Code Playgroud)
它目前没有被击中.知道为什么吗?
我目前有一个Angular 2应用程序正在运行,如下所示:
访问该站点时,App.component被引导.App.component的模板具有所有组件标记(例如menu.component,search.component和router-outlet).
我基本上需要的是:目前访问者被直接重定向到登录页面,因为用户需要登录.他仍然能够看到菜单和仅适用于登录用户的所有组件.添加额外模板层的最佳策略是什么,因此未登录的用户会被重定向?
在angular2中,这些angular1事件的等价物是什么?
$ routeChangeStart,$ routeChangeSuccess,$ routeChangeError
我想在root app组件中使用这些事件来处理任何路由更改.
提前致谢
更新
如果我使用OnActivate,OnDeactivate事件,它需要将它添加到每个组件:(
此外,我试图实现我自己的RouterOutlet,但我无法访问以前关于激活,停用事件的指令,我也不知道如何处理路由更改错误
router.subscribe也只给了我名字,但我想让当前和下一个指令对象改变一些属性
我的目标是:
1-开始更改页面时显示加载指示符并在页面加载时隐藏它.
2-为当前和下一条指令制作过渡动画rtl或ltr