Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止angular应用程序中routerlink的默认单击行为?_Javascript_Html_Angular_Typescript_Angular Routing - Fatal编程技术网

Javascript 如何防止angular应用程序中routerlink的默认单击行为?

Javascript 如何防止angular应用程序中routerlink的默认单击行为?,javascript,html,angular,typescript,angular-routing,Javascript,Html,Angular,Typescript,Angular Routing,尽管这在理论上不是特定角度的,但需要在ng应用程序中解决,并且所有示例都不起作用。我在SO中看到了所有答案,但这些解决方案似乎都不适用于现实生活中的Angular7应用程序。例如,以下任何一项工作: <!-- option 1 --> <a class="nav-link" [routerLink]='["/properties", sessionId]' (click)="$event.stopPropagation()">Properties </a>

尽管这在理论上不是特定角度的,但需要在ng应用程序中解决,并且所有示例都不起作用。我在SO中看到了所有答案,但这些解决方案似乎都不适用于现实生活中的Angular7应用程序。例如,以下任何一项工作:

<!-- option 1 -->
<a class="nav-link" [routerLink]='["/properties", sessionId]'
 (click)="$event.stopPropagation()">Properties
</a>
<!-- option 2 -->
<a class="nav-link" [routerLink]='["/properties", sessionId]'
 (click)="$event.stopPropagation();false">Properties
</a>
<!-- option 3 -->
<a class="nav-link" [routerLink]='["/properties", sessionId]'
 (click)="$event.preventDefault()">Properties
</a>
<!-- option 4 -->
<a class="nav-link" [routerLink]='["/properties", sessionId]'
 (click)="$event.preventDefault();false">Properties
</a>

我的现实世界示例在锚点内有mat图标,因此我使用该图标,但在链接上方建议使用内部跨距。

描述了routerLink不尊重
preventDefault
的原因

解决方案是为锚点创建一个内部元素,如果还没有(比如图标)。在上面的链接中,在内部创建了一个跨度,但为了清晰起见,我在锚固件中省略了图标:

  <a class="nav-link" [routerLink]='["/map", sessionId]'>
    <mat-icon class="tab-nav-item-icon" (click)="$event.stopPropagation();$event.preventDefault()">map</mat-icon>
  </a>

地图

我个人使用了return false,它就像一个符咒。你能创建一个plunkr吗?谢谢你的评论!(单击)=“return false”在compiler.js TemplateParser中抛出语法错误。我也试过。使用这个。@AyatullahRahmani:为什么会这样?你可能要找的是
CanDeactivate
guard。
  <a class="nav-link" [routerLink]='["/map", sessionId]'>
    <mat-icon class="tab-nav-item-icon" (click)="$event.stopPropagation();$event.preventDefault()">map</mat-icon>
  </a>