我想在我的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)同时拥有routerLinkActive
和skipLocationChange
并期望得到您想要的结果。您可以根据api添加选项,但没有skipLocationChange
选项。
不过,您可以将路由器中的NavigationExtras
与ActivatedRoute结合使用,并基于此来确定链接是否应处于活动状态
更新
由于2.3.0-beta.0
您可以将skipLocationChange
选项添加到routerLink
指令:
<li><a [routerLink]="['route1']" skipLocationChange>Route1</a></li>