当手动改变路线或按后退/前进时,停止呼叫两次

时间:2016-09-29 11:47:44

标签: angular angular2-routing

我正在使用angular 2.0稳定版,并且想要在离开页面之前要求用户确认(他们的更改不会被保存)。

问题是如果用户希望访问延迟加载的页面,则实现“CanDeactivate”防护两次。 (使用哈希定位策略)

重现的步骤:

  1. 下载并设置https://github.com/iurii-kyrylenko/angular2-webpack
  2. 设置CanDeactivate guard
  3. app.routing.ts

    { path: 'task1', component: Task1Component, canDeactivate: ['candeactivate'] },
    

    应用程序/任务-1 / task1.module.ts

    @NgModule({
        imports: [CommonModule],
        declarations: [Task1Component],
        exports: [Task1Component],
        providers: [
            {
                provide: 'candeactivate',
                useValue: () => {
                    console.log("can deactivate");
                    return confirm("Test");
                }
            }
        ]
    })
    export class Task1Module {}
    
    1. 从“localhost:8080 /#/ task1”
    2. 开始
    3. 手动将网址更改为“localhost:8080 /#/ task2”
    4. 请注意,系统会要求您两次确认。我找到了https://github.com/angular/angular/issues/11754,但现在没有任何解决方案。

      有没有解决方法呢?

0 个答案:

没有答案