防止Angular 2中的routerLink操作

Buc*_*ead 5 angular2-routing angular4-router

我有一个链接:

<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是行不通的。我该如何解决?

Vit*_*ask 5

您可以使用span元素包装链接的文本,并在此span上绑定事件处理程序:

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

和您的处理程序:

function testClick($event: MouseEvent) {
    if (expression) {
        $event.stopPropagation();
        // do something
        return;
    }
    // navigates to /test
}
Run Code Online (Sandbox Code Playgroud)

  • $ event.preventDefault()应该也显示在处理程序中 (2认同)
  • 您是正确的,但是在这种情况下,您必须防止这种情况,否则它将无法正常工作@VitaliyAlekask (2认同)