浅谈Angular路由跳转中的navigateByUrl和navigate
本篇文章给大家介绍一下Angular Router路由跳转中的navigateByUrl与navigate,看看navigate()和navigateByUrl()的使用方法。
开始进入实战前,我们先来看下官方文档中对navigateByUrl、navigate的介绍。【相关教程推荐:《angular教程》】
navigateByUrl() :
定义:基于所提供的 URL 进行导航,必须使用绝对路径
参数:url(string | UrlReee )、extras(一个包含一组属性的对象,它会修改导航策略)
返回值:返回一个Promise。当导航成功时,它会解析成true;导航失败或者出错时,它会解析成false
ps:对于navigateByUrl的用法和定义官方已经交代的很清楚了。但是,如果我们对其中的定义绝对路径和相对路径的概念有点记忆模糊了,那么,我,直接给出例子,就不麻烦小宝贝们再去找度娘了,谁让我贴心呐
E:\mySoft\Git\bin // 绝对路径。从盘符开始 Git\bin // 相对路径。从当前路径开始
navigate():
定义:基于所提供的命令数组和起点路由进行导航。 如果没有指定起点路由,则从根路由开始进行绝对导航
参数:commands(any[] )、extras
返回值:返回一个Promise。当导航成功时,它会解析成true;导航失败时,它会解析成false;导航出错时,它会拒绝(reject)
值得注意的点是,navigate的第一个参数必须是数组形式的即 any[]。
言归正传,回归到功能上,这两个方法都是在angular种进行路由跳转的。那么我们在实际项目中有以下常见的xxx种用法,我们 一 一 来看看吧~~
实战中,我们先来定义三个路由,分别是“路由a、路由b、路由c”。
这三个路由分别是同级路由并且都在根目录下。
navigateByUrl
路由a跳转到路由b this.router.navigateByUrl('b'); // 正确。解析结果是 localhost:4200/b this.router.navigateByUrl('./b'); // 错误。只能是绝对路径哦 路由b跳转到路由c this.router.navigateByUrl('cascader', {}); // 解析结果是 localhost:4200/c
navigateByUrl的用法比较简单,容易理解,用法也比较单一。我们主要来介绍以下navigate的用法哈~~
navigate
1、路由b跳转到路由c(以根路由为基础进行跳转)
this.router.navigate(['c']); // 绝对路径。 localhost:4200/c this.router.navigate(['./c']); // 相对路径。 localhost:4200/c
2、路由b跳转到路由c(以当前路由为基础进行跳转)
this.router.navigate(['c'],{ relativeTo:this.route }); // localhost:4200/b/c this.router.navigate(['c',1],{ relativeTo:this.route }); // localhost:4200/b/c/1
3、路由b跳转到路由b(以当前路由为基础进行跳转)
this.router.navigate([],{ relativeTo:this.route }); // localhost:4200/b
4、路由b跳转到路由c(路由中携带锚点进行跳转)
this.router.navigate(['c'],{ fragment:'zita' }); // localhost:4200/c#zita 现在么,成功跳转到路由c了。我又想从路由c跳转到路由a(携带锚点跳转) this.router.navigate(['a'], { preserveFragment: true}); // localhost:4200/a#zita
5、路由b跳转到路由c(路由中传参数进行跳转)
this.router.navigate(['c'],{ queryParams:{name:'zita'} }); // localhost:4200/c?name=zita 现在么,成功跳转到路由c了。我又想从路由c跳转到路由a,有以下五种情况: (1)不携带参数跳转 this.router.navigate(['a'], { queryParamsHandling: null }); // localhost:4200/a (2)携带参数跳转 this.router.navigate(['a'], { queryParamsHandling: 'merge'}); // localhost:4200/a?name=zita 执行完以下三种情况的代码后,看到的页面是路由a的页面哦! (3)携带参数。浏览器中的URL不变,参数会失效即,在路由a中打印的参数结果是{} this.router.navigate(['a'], { skipLocationChange: true }); // localhost:4200/c?name=zita (4)携带参数。浏览器中的URL不变,参数有效。在路由a中打印的参数结果是{name: "zita"} this.router.navigate(['a'], {skipLocationChange: true, queryParamsHandling: 'merge'}); // localhost:4200/c?name=zita (5)携带参数。浏览器中的URL不变,参数有效,并且携带上其他参数。在路由a中打印的参数结果是{name: "zita",sex: "female"} this.router.navigate( ['a'], {skipLocationChange: true, queryParamsHandling: 'merge', queryParams: { sex: 'female' } }); // localhost:4200/c?name=zita
6、路由b跳转到路由c(导航时不会把当前状态记入历史)
在路由c中,点击浏览器的返回按钮,会忽略路由b而直接跳转回到路由b的上一层路由 this.router.navigate(['c'],{ replaceUrl:true }); // localhost:4200/c
最后的最后,小可爱们~
在使用路由的时候千千万万不要忘记引入router哦~~
import { Router } from '@angular/router'; constructor( private router: Router) { }
另外,如果你想打印携带过来的参数,那么代码片段如下:
import { Router, ActivatedRoute, Params } from '@angular/router'; ngOnInit() { this.route.queryParams.subscribe((params: Params) => { console.log(params); }); }
happyEnding…
更多编程相关知识,请访问:编程入门!!
以上是浅谈Angular路由跳转中的navigateByUrl和navigate的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

本篇文章继续Angular的学习,带大家了解一下Angular中的元数据和装饰器,简单了解一下他们的用法,希望对大家有所帮助!

Angular.js是一种可自由访问的JavaScript平台,用于创建动态应用程序。它允许您通过扩展HTML的语法作为模板语言,以快速、清晰地表示应用程序的各个方面。Angular.js提供了一系列工具,可帮助您编写、更新和测试代码。此外,它还提供了许多功能,如路由和表单管理。本指南将讨论在Ubuntu24上安装Angular的方法。首先,您需要安装Node.js。Node.js是一个基于ChromeV8引擎的JavaScript运行环境,可让您在服务器端运行JavaScript代码。要在Ub

本篇文章带大家深入了解一下angular的状态管理器NgRx,介绍一下NgRx的使用方法,希望对大家有所帮助!

angular中怎么使用monaco-editor?下面本篇文章记录下最近的一次业务中用到的 monaco-editor 在 angular 中的使用,希望对大家有所帮助!

本篇文章给大家分享一个Angular实战,了解一下angualr 结合 ng-zorro 如何快速开发一个后台系统,希望对大家有所帮助!

随着互联网的飞速发展,前端开发技术也在不断改进和迭代。PHP和Angular是两种广泛应用于前端开发的技术。PHP是一种服务器端脚本语言,可以处理表单、生成动态页面和管理访问权限等任务。而Angular是一种JavaScript的框架,可以用于开发单页面应用和构建组件化的Web应用程序。本篇文章将介绍如何使用PHP和Angular进行前端开发,以及如何将它们

本篇文章带大家了解一下Angular中的独立组件,看看怎么在Angular中创建一个独立组件,怎么在独立组件中导入已有的模块,希望对大家有所帮助!
