返回博客

在 Angular Router 中使用 RouterLink、Navigate 和 NavigateByUrl 进行导航

在 Angular Router 中使用 RouterLink、Navigate 和 NavigateByUrl 进行导航

介绍

Angular 应用在如今非常常见。它们是基于 Single Page Applications (SPA) 的概念构建的。在此类应用中,由于使用了组件,跨网页的路由与传统网站不同。在 Angular 中,您需要使用 RouterLink 进行导航以在应用中进行路由。RouterLink 是一个指令,它提供了 Router.navigateRouter.navigateByURL 方法来在组件类之间进行导航。

在本教程中,我们将 探讨 RouterLink, Router.navigate, Router.navigateByURL 以及代码 示例.

RouterLink

在 HTML 中,链接通常使用锚点标签插入 <a> ,如下所示:

此示例链接将引导用户跳转到 /sample 页面。然而,如上所述,单页面应用 (SPA) 没有不同的页面可供链接。相反,它有不同的视图或组件展示给用户。

如果您需要允许用户进行导航并更改视图,则必须使用 RouterLink 指令,而不是 href:

这个 RouterLink 示例将引导用户跳转到位于 /users/example 的组件。不同的 URL 片段也可以像以下示例一样在数组中传递:

这两个示例的格式不同,但仍会被引导至位于 /users/example.

  • 相对路径

RouterLink 允许指定相对 URL。我们可以使用 ../ 来返回到更高级别的导航。以下是我们的实现方式:

在上面的示例中,如果用户位于 /users/posts,导航将带用户前往 /posts/parent。您还可以使用 ./, ../,或者如果需要,甚至可以不带前导斜杠。

  • 参数

在某些场景下,您可能需要在路由之间传递数据。一个简单的例子是,当用户填写表单时,您引导他进入表单的下一部分以获取更多详细信息。

要传入参数,可以在 URL 片段列表中传递一个封装了数据的对象:

在上方, Router 将导航至 /users;display=sample/xyz.

  • 命名出口

命名路由出口简单来说就是带有名称的路由出口。让我们来看看相关的代码:

在该示例中, xyz 片段将被放置在名为 side 的出口中。我们还可以像下面这样指定多个命名出口:

这将把 first 片段替换为 abc,并将 second 片段替换为 xyz.

Router

在 Angular 中, Router 类用于定义路由并在它们之间进行导航。这可以通过两种方法来实现: Router.navigateRouter.navigateByUrl。这两种方法都返回一个 promise。这个 promise 可以有三个值: true, false,或 null.

  • 值为 true,当导航成功时。

  • 值为 null,当没有导航时。

  • 以及 false,如果由于某种原因导航失败。

如果您想在应用程序中使用这些方法,首先需要导入 Router 类到您的组件类中:

接下来,您需要在构造函数中将此 Router 注入到依赖项中:

完成此设置后,您就可以在应用程序中使用 Router.navigateRouter.navigateByUrl 方法了。

Router.navigate

Router.navigate 方法接受一个 URL 片段数组。让我们来看一个 Router.navigate 代码的基本示例:

Router.navigateByUrl

最后,让我们来看看 Router.navigateByUrl。此方法类似于 Router.navigate,但它不接受 URL 片段,而是接受一个指定 URL 的字符串。此导航必须是绝对的,并且开头必须有 / 在开头:

上述代码将把用户导航到 /users;all=true 页面。

结论

在本教程中,我们学习了如何使用 RouterLink 在 Angular 应用中进行导航。由于是单页面应用,Angular 应用中的路由与传统 Web 应用程序略有不同。了解 RouterLink 及其功能可以帮助开发人员构建健壮的路由。

Angular 应用使用 Node.js 作为其运行时。如果您想了解更多关于 Node.js 以及如何部署 Node.js 应用程序的信息,可以参考以下教程:

祝您编程愉快!

author

Hark Labs

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。