angular - CanDeactivate 只触发一次,并不总是
问题描述
单击浏览器后退按钮时,我CanDeactivateGuard
并不总是触发。我找不到原因。你能看看我的代码,给我建议吗?
警卫:
@Injectable()
export class CanDeactivateGuard implements CanDeactivate<SignupComponent> {
canDeactivate(component: SignupComponent): boolean {
if (!component.canDeactivate()) {
if (confirm("You have unsaved changes! If you leave, your changes will be lost.")) {
return true;
} else {
return false;
}
}
return true;
}
}
SignupComponent 中的方法:
canDeactivate() {
if (this.activeStep == 'step1' || this.activeStep == 'step5') {
return true;
} else {
return false;
}
}
路由:
...
{
path: 'signup/:nickname',
component: SignupComponent
},
{
path: 'signup',
component: SignupComponent,
canDeactivate: [CanDeactivateGuard]
},
...
解决方案
也将其添加到其他路线
{
path: 'signup/:nickname',
component: SignupComponent
canDeactivate: [CanDeactivateGuard]
},
{
path: 'signup',
component: SignupComponent,
canDeactivate: [CanDeactivateGuard]
},
推荐阅读
- python - How to associate an input variable to a list name?
- javascript - Can't access parent elements
- python - 在python中覆盖列表的构造函数
- sanity - 通过 Sanity Studio 中的引用链接时,如何访问资产的 URL?
- cypress - 需要帮助才能使用 cypress 切换到 iframe
- spring-integration - Spring集成Handle vs Transform
- reactjs - React-Router - 重新加载应用程序时访问私有路由
- python - 如何在子进程python期间显示进度条
- laravel - SQLSTATE [23000]:违反完整性约束:1052 where 子句中的列 'id' 不明确
- c++ - Tensorflow C API 为 RGB 图像返回错误的结果