作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我的用户在屏幕上进行脏更改时,我有一个路由守卫在他们尝试导航离开时提示他们保存或丢弃。
但是,如果我由于不活动而将他们注销,我想强制导航并绕过路由守卫(通过丢弃他们的更改),以确保他们的屏幕是空白的。
如何绕过路由守卫?
最佳答案
我的解决方案如下:
我的 logout
方法在成功注销后,将应用程序重定向到 /login
路由:
@Injectable
export class AuthService {
// ...
logout () {
// do logout
this.router.navigate(['/login']);
}
}
然后我的守卫如下:
@Injectable
export class DiscardChangesGuard implements CanDeactivate<MyComponent> {
canDeactivate(component: MyComponent, currentRoute: ActivatedRouteSnapshot,
currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable<boolean> | boolean {
if (nextState.url === '/login') {
return true; // bypass checks if we are trying to go to /login
}
// perform regular checks here
}
}
关于Angular4 路由 : Force Navigation By Bypassing Route Guard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43766938/
我是一名优秀的程序员,十分优秀!