Angular 手动更改路线或按下后退/前进按钮时,停用两次呼叫的防护
我使用的是angular 2.0稳定版,希望用户在离开页面之前确认(他们的更改不会被保存) 问题是,如果用户希望访问延迟加载的页面,那么实现的“CanDeactivate”保护将被调用两次。(使用哈希定位策略) 复制步骤:Angular 手动更改路线或按下后退/前进按钮时,停用两次呼叫的防护,angular,angular2-routing,Angular,Angular2 Routing,我使用的是angular 2.0稳定版,希望用户在离开页面之前确认(他们的更改不会被保存) 问题是,如果用户希望访问延迟加载的页面,那么实现的“CanDeactivate”保护将被调用两次。(使用哈希定位策略) 复制步骤: 下载和安装 设置CanDeactivate防护罩 app.routing.ts app/task-1/task1.module.ts 从“localhost:8080/#/task1”开始 手动将url更改为“localhost:8080/#/task2” 请注意,您被要求两
是否有解决方法?您找到了解决方案吗?@skgyan否。我最终将第一次确认的值保存在一个cookie中,该cookie的有效期为1秒,如果cookie不是空的,则跳过第二次确认。对我来说,canActivate导致了此问题。我用可观察的方法来解决这个问题。从这里得到帮助-
{ path: 'task1', component: Task1Component, canDeactivate: ['candeactivate'] },
@NgModule({
imports: [CommonModule],
declarations: [Task1Component],
exports: [Task1Component],
providers: [
{
provide: 'candeactivate',
useValue: () => {
console.log("can deactivate");
return confirm("Test");
}
}
]
})
export class Task1Module {}