Как использовать маршрутизатор.navigateByUrl и маршрутизатор.перейдите в угловой
https://angular.io/api/router/RouterLink дает хороший обзор того, как создавать ссылки, которые приведут пользователя к другому маршруту в Angular4, однако я не могу найти, как сделать то же самое программно, а пользователю нужно щелкнуть ссылку
2 ответов
navigateByUrl
routerLink
директива, используемая следующим образом:
<a [routerLink]="/inbox/33/messages/44">Open Message 44</a>
- это просто обертка вокруг важно навигация с помощью router
и navigateByUrl способ:
router.navigateByUrl('/inbox/33/messages/44')
как видно из источников:
export class RouterLink {
...
@HostListener('click')
onClick(): boolean {
...
this.router.navigateByUrl(this.urlTree, extras);
return true;
}
поэтому везде, где вам нужно перейти к другому маршруту, просто введите router
и использовать navigateByUrl
способ:
class MyComponent {
constructor(router: Router) {
this.router.navigateByUrl(...);
}
}
перейти
есть еще один метод на маршрутизаторе, который вы можете использовать - перейти:
router.navigate(['/inbox/33/messages/44'])
разница между этими двумя
используя
router.navigateByUrl
похоже на изменение строки местоположения непосредственно-мы предоставляем "весь" новый URL. Посколькуrouter.navigate
создает новый URL-адрес, применяя массив переданный команды, патч, к текущему URL.чтобы четко увидеть разницу, представьте, что текущий URL-адрес
'/inbox/11/messages/22(popup:compose)'
.С этим URL, вызывая
router.navigateByUrl('/inbox/33/messages/44')
в результате'/inbox/33/messages/44'
, и призываяrouter.navigate('/inbox/33/messages/44')
в результате'/inbox/33/messages/44(popup:compose)'
.
подробнее официальные документы.
помимо ответов, есть подробности navigate
. Из комментариев функции:
/**
* Navigate based on the provided array of commands and a starting point.
* If no starting route is provided, the navigation is absolute.
*
* Returns a promise that:
* - resolves to 'true' when navigation succeeds,
* - resolves to 'false' when navigation fails,
* - is rejected when an error happens.
*
* ### Usage
*
* ```
* router.navigate(['team', 33, 'user', 11], {relativeTo: route});
*
* // Navigate without updating the URL
* router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});
* ```
*
* In opposite to `navigateByUrl`, `navigate` always takes a delta that is applied to the current
* URL.
*/
на Руководство Маршрутизатор имеет более подробную информацию о программной навигации.