Angular 可以使用模式/选择器激活

Angular 可以使用模式/选择器激活,angular,canactivate,Angular,Canactivate,我目前正在处理一个应用程序的身份验证服务。此服务使用后端生成的令牌。现在,如果令牌过期,它会将用户重定向到登录页面;但是,我想实现一个解决方案,它不重定向用户,而是调用一个登录模式,用户将在其中放置其信息。 下面是当前代码的一个片段 从'@angular/core'导入{Injectable}; 从'@angular/Router'导入{Router,CanActivate}; 从“/authentication.service”导入{AuthenticationService}; @可注射()

我目前正在处理一个应用程序的身份验证服务。此服务使用后端生成的令牌。现在,如果令牌过期,它会将用户重定向到登录页面;但是,我想实现一个解决方案,它不重定向用户,而是调用一个登录模式,用户将在其中放置其信息。 下面是当前代码的一个片段

从'@angular/core'导入{Injectable};
从'@angular/Router'导入{Router,CanActivate};
从“/authentication.service”导入{AuthenticationService};
@可注射()
导出类AuthGuard实现了CanActivate{
构造函数(专用路由器:路由器,专用身份验证服务:身份验证服务){
}
canActivate(){
试一试{
if(this.authenticationService.loggedIn()){
返回true;
}
}捕获(错误){
console.log(错误);
}
this.router.navigate(['/login']);
返回false;
}
}
我有另一个具有登录模式的组件

@组件({
选择器:“登录模式”,
templateUrl:'./login modal.component.html',
样式:[]
})
基本上,我想做的是更改
this.router.navigate(['/login'])
的用法,使用
选择器:“登录模式”
切换到
LoginModalComponent
。 如何更改
CanActivate
方法以调用
LoginModalComponent


我看到了一个解决这个问题的方法,它使用bootstrap4;但是,我的应用程序使用Bootstrap 3,因此我无法实现它。

您有一些选择,但这里有一些建议:

  • 导航到另一个页面,以打开登录名并挂起要从中导航的页面
  • 拥有一个模式服务,该服务接收登录组件中的信息,并向route guard返回承诺或可观察的信息
  • 具有应用程序级别的登录模式和从route guard打开的服务
我认为您应该致力于向警卫提供一个承诺,当解决问题时,他们将知道用户是否重新登录

希望这有帮助