Полный URL-адрес routerLink
Из angular docs:
Директива link маршрутизатора всегда обрабатывает предоставленный ввод как дельта к текущему URL-адресу.
Например, если текущий URL-адрес /user/(box//aux:team)
. Затем следующая ссылка <a [routerLink]="['/user/jim']">Jim</a>
будет генерировать ссылка /user/(jim//aux:team)
.
Итак, как вы создаете ссылку на /user/jim
?
Я пробовал ['/user/jim', { outlets: { aux: null }}]
, но это не работает.
Даже если бы это сработало, это не было бы оптимальным решением. Я скорее ищу способ перехода к абсолютному URL-адресу, чем отмена выходных точек.
EDIT:
По тому же вопросу у меня есть ссылка на корень: routerLink="/"
, который делает именно это, он перенаправляет на корень моего приложения без каких-либо точек, таких как абсолютная ссылка. Что смешно здесь, я не особо хочу, чтобы это поведение для этой конкретной ссылки, сохраняя любые маршруты маршрутов, было прекрасно...
Ответы
Ответ 1
По состоянию на август 2018 года в angular документах говорится:
-
Если первый сегмент начинается с /, маршрутизатор будет искать маршрут от корня приложения.
- Если первый сегмент начинается с./или не начинается с косой черты, маршрутизатор вместо этого будет искать дочерние элементы текущего активированный маршрут.
- И если первый сегмент начинается с.. /, маршрутизатор поднимется на один уровень вверх.
Ответ 2
Вы можете использовать относительные пути:
<a [routerLink]="['./']"
Будет перенаправлен ваш верхний родитель (/user/jim
)
<a [routerLink]="['']"
<a [routerLink]="['/']"
Будет перенаправлен на '/'
Ответ 3
Обход вашей проблемы может заключаться в том, чтобы поместить событие click на ваш элемент html, затем вы можете передать свой URL-адрес в обработчик событий и перенаправить в любом месте, используя "Router", импортированный из "@ angular/router":
<a (click)="reRoute(urlToRoute)"></a>
то в файле .ts:.
import { Router} from '@angular/router';
..
constructor(private router: Router,
) { }
..
reroute(url) {
this.router.navigate([url])
}
Надеюсь, что это решает вашу проблему!
Ответ 4
Я полагаю, что самый простой способ сделать это будет
<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
-->