如何在Angular中使用router.navigateByUrl和router.navigate

前端之家收集整理的这篇文章主要介绍了如何在Angular中使用router.navigateByUrl和router.navigate前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
https://angular.io/api/router/RouterLink很好地概述了如何在Angular4中创建将用户带到不同路径的链接,但是我找不到如何以编程方式执行相同的操作而不需要用户单击链接
navigateByUrl

如下所用的routerLink指令:

<a [routerLink]="/inBox/33/messages/44">Open Message 44</a>

只是使用路由器及其navigateByUrl方法的命令式导航的包装:

router.navigateByUrl('/inBox/33/messages/44')

从资料来源可以看出:

export class RouterLink {
  ...

  @HostListener('click')
  onClick(): boolean {
    ...
    this.router.navigateByUrl(this.urlTree,extras);
    return true;
  }

因此,只要您需要将用户导航到另一个路由,只需注入路由器并使用navigateByUrl方法

class MyComponent {
   constructor(router: Router) {
      this.router.navigateByUrl(...);
   }
}

导航

您可以使用路由器上的另一种方法navigate

router.navigate(['/inBox/33/messages/44'])

两者之间的差异

Using router.navigateByUrl is similar to changing the location bar
directly–we are providing the “whole” new URL. Whereas
router.navigate creates a new URL by applying an array of passed-in
commands,a patch,to the current URL.

To see the difference clearly,imagine that the current URL is
'/inBox/11/messages/22(popup:compose)'.

With this URL,calling
router.navigateByUrl('/inBox/33/messages/44') will result in
'/inBox/33/messages/44',and calling
router.navigate('/inBox/33/messages/44') will result in
'/inBox/33/messages/44(popup:compose)'.

阅读更多the official docs.

猜你在找的Angularjs相关文章