routerLink绝对网址

时间:2016-10-04 09:33:45

标签: angular angular2-routing

来自angular docs

  

路由器链接指令始终将提供的输入视为增量   到目前的网址。

     

例如,如果当前网址为/user/(box//aux:team)。那么   将生成以下链接<a [routerLink]="['/user/jim']">Jim</a>   链接/user/(jim//aux:team)

那么如何创建指向/user/jim的链接?

我尝试了['/user/jim', { outlets: { aux: null }}],但这不起作用 即使它起作用也不是最佳解决方案。我宁愿寻找一种方法来导航到一个绝对网址,而不是取消 possibles 网点。

编辑:

在同一主题上,我有一个指向root的链接:routerLink="/"就是这样,它会重定向到我的应用程序的根目录而没有像绝对链接那样的出口。这里有趣的是我并不特别想要那个特定链接的行为,保持任何网点路线都很好......

7 个答案:

答案 0 :(得分:9)

您可以使用相对路径:

<a [routerLink]="['./']"

将重定向到您的上级父级(/user/jim

<a [routerLink]="['']"
<a [routerLink]="['/']"

将重定向到'/'

答案 1 :(得分:9)

截至2018年8月,Angular文档说:

  
      
  • 如果第一段以/开头,则路由器将从应用程序的根目录查找路由。
  •   
  • 如果第一段以./开头或不以斜杠开头,则路由器将查找当前段的子段   激活的路线。
  •   
  • 如果第一段以../开头,则路由器将上升一个级别。
  •   

答案 2 :(得分:1)

截至2020年5月,尚无可用于内置[routerLink]的初始问题的有效答案,所以来了。

在您的问题中,['/user/jim', { outlets: { aux: null }}]的想法很好,但是您必须明确指定主要出口:

<a [routerLink]="['/', { outlets: { primary: 'user/jim', aux: null } }]">
  This will be a link to '/user/jim', without any route in the aux path
</a>

(据我所知,当前无法在没有取消可能的出口的情况下将[routerLink]与绝对网址一起使用。)

您可以按照相同的逻辑进行编辑。如果您不更改辅助出口,而是将主出口明确设置为空(根),则可以导航到根并保留当前出口:

[routerLink]="['/', { outlets: { primary: '' } }]"

答案 3 :(得分:0)

解决问题的方法可能是在你的html元素上放置一个click事件,你可以将你的url传递给eventhandler并使用从'@ angular / router'导入的'Router'重新路由到任何地方:

<a (click)="reRoute(urlToRoute)"></a>

然后在组件的.ts文件中:

     import { Router} from '@angular/router';
..
    constructor(private router: Router,
        ) { }
..

    reroute(url) {
 this.router.navigate([url])
}

希望这能解决你的问题!

答案 4 :(得分:0)

我想最简单的方法是

<a [routerLink]=['/path/you/want', varibleToBeUsed]></a>

示例

let link.path = 'something';
<a [routerLink]="['/',link.path]">test</a>
<!--
www.test.com/something
-->


<a [routerLink]="['/user/jim',link.path]">test2</a>
<!-- this will append to the base path 
i.e. www.test.com/user/jim/something
-->



<a [routerLink]="['jim',link.path]">test3</a>  
<!-- this will append to current url path 
i.e. if your current path is www.test.com/login then it will append as
www.test.com/login/jim/something
-->

答案 5 :(得分:0)

HTML:

 <a id="id" class="link" (click)="goToDetail(value)">{{ value }}</a>

TS:

goToDetail(value) {
  this.router.navigate([this.urlDetalle + value]);
}

this.urlDetalle是一个绝对路径,我将其合并以查看任何实体的详细信息

效果很好!

答案 6 :(得分:0)

<a [routerLink]="['./user1', id]">User1 detail</a> // this is child of the current activated route

<a [routerLink]="['/user2']">User2</a> // this is absolute new router