我想在我的Angular 2应用程序中进行路由时禁用更改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>