我想在我的Angular2应用程序中禁用路由时更改URL。
我知道skipLocationChange: true必须作为NavigationExtras参数传递给路由器。
我的问题是:
是否可以从模板内部将NavigationExtras传递给RouterLink?
我试过的:

<h1>
  {{title}}
</h1>

<ul>
    <li><a [routerLink]="['route1', { skipLocationChange: true }]">Route1</a></li>
    <li><a [routerLink]="['route2', { skipLocationChange: true }]">Route2</a></li>
</ul>

<router-outlet></router-outlet>

但它不起作用。
单击链接后,路线将更改为http://localhost:4200/route2;skipLocationChange=true
我不想在我的控制器中使用this.router.navigate(['route1], {skipLocationChange: true),从那时起我就失去了routerLinkAtive高亮显示。

最佳答案

不可能(现在和afaik)同时拥有routerLinkActiveskipLocationChange并期望得到您想要的结果。您可以根据api添加选项,但没有skipLocationChange选项。
不过,您可以将路由器中的NavigationExtrasActivatedRoute结合使用,并基于此来确定链接是否应处于活动状态
更新
由于2.3.0-beta.0您可以将skipLocationChange选项添加到routerLink指令:

<li><a [routerLink]="['route1']" skipLocationChange>Route1</a></li>

09-27 11:36