相关疑难解决方法(0)

在离开页面之前警告用户未保存的更改

我想在用户离开我的angular 2应用程序的特定页面之前警告用户未保存的更改.通常我会使用window.onbeforeunload,但这不适用于单页面应用程序.

我发现在角度1中,你可以挂钩$locationChangeStart事件confirm为用户抛出一个盒子,但我还没有看到任何显示如何使角度2工作,或者如果该事件仍然存在.我也见过为ag1提供功能的插件onbeforeunload,但同样,我还没有看到任何方法将它用于ag2.

我希望其他人找到解决这个问题的方法; 任何一种方法都可以用于我的目的.

angular2-routing angular

93
推荐指数
6
解决办法
6万
查看次数

Angular 2:NavigationCancel - 导航ID 2不等于当前导航ID 3

我正在尝试将旧网址(电子邮件模板中的链接)从以前的网站重定向到另一条路线,如下所示:

if (route.url.indexOf('/#/') !== -1) {
    this.router.navigate(['/my-route']);
}
Run Code Online (Sandbox Code Playgroud)

但是,导航将被取消,原因如下:

Navigation ID 2 is not equal to the current navigation id 3.

综观角2路由器源,这种情况发生在所述runNavigate方法时id !== this.navigationId(https://github.com/angular/angular/blob/master/modules/@angular/router/src/router.ts#L652).我找不到有关该navigationId属性的任何信息,为什么会发生这种情况以及如何解决它.

在存在的路由之间重定向似乎有效,但不在这些旧的散列标记URL和现有路由之间重定向.路由器中是否必须存在两条路由才能在它们之间进行重定向?

非常感谢帮助.

angular2-routing angular

22
推荐指数
1
解决办法
7296
查看次数

如何取消Angular 2中的路线变更?

当用户在浏览器中单击后退或前进按钮时,我想取消路由更改.到目前为止,我设法捕获路由更改事件,如下面的代码:

constructor(router:Router) {
  router.events
    .subscribe((event:Event) => {
      // some logic.
      // event.preventDefault(); ?
    });
}
Run Code Online (Sandbox Code Playgroud)

我在事件中找不到任何方法/成员来停止事件默认.然后我会在控制台上收到此错误,因为我没有按预期注册路由配置,这是因为我location.go()用来修改网址.

错误:未捕获(在承诺中):错误:无法匹配任何路由:'Some/Url'

有没有办法取消路由更改,以便Angular不查看路由配置?

javascript angular

6
推荐指数
1
解决办法
7232
查看次数

防止Angular 2中的routerLink操作

我有一个链接:

<a routerLink="/test" (click)="testClick($event)">Test link </a>
Run Code Online (Sandbox Code Playgroud)

我想在testClick功能上做这样的事情:

testClick(event:any) {
    if (..some expression..) {
        //custom popup confirmation
        //if true --> event.preventDefault();
    } else {
        // go to link
    }
}
Run Code Online (Sandbox Code Playgroud)

但是打电话preventDefault是行不通的。我该如何解决?

angular2-routing angular4-router

5
推荐指数
1
解决办法
3130
查看次数