详解Angular5路由传值方式及其相关问题


Posted in Javascript onApril 28, 2018

目前Angular已经升级到了稳定版本Angular5,这次升级更小更快以及更稳定!路由可以说是Angular甚至是单页应用的核心部分了吧!在angularjs中的路由最大的缺点就是无法嵌套路由,在Angular中解决了这个问题!在Angular中路由不仅仅是页面跳转,其中还有一项叫英雄列表跳转英雄详情!在诸多的列表,不可能给每个英雄做一个详情页,于是乎路由参数起到作用了!通过路由传入参数识别那个英雄的详情!

现在对于路由传值进行详解,首先一种方式是官网的导航到详情的单值id传入,另一种是多数据传入!

1.单值传入

['/hero', hero.id]
<ul class="items">
  <li *ngFor="let hero of heroes$ | async"
   [class.selected]="hero.id === selectedId">
   <a [routerLink]="['/hero', hero.id]">
    <span class="badge">{{ hero.id }}</span>{{ hero.name }}
   </a>
  </li>
 </ul>

以上是官网示例

下面我们用我自己的示例介绍一下:

首先是列表页,以及跳转方式

<p *ngFor="let item of items" [routerLink]="['/listDetail',item.id]">{{item.name}}</p>

然后是配置路由:(单值传入的方式需要在详情组件路由配置)

{
  path:'listDetail/:id',
  component:ListDetailComponent
 },

传入后就是取到参数,在详情组件的ngOnInit生命周期获取参数

ngOnInit() {
  this.route.params
   .subscribe((params: Params) => {
    this.id = params['id'];
    console.log(this.id);
    console.log('传值');
    console.log(params)
   })
 }

2.我们在平时的复杂的业务场景我们需要传多个数据,这时候该怎么办呢?这时候我们就用到了queryParams

<p *ngFor="let data of datas" [routerLink]="['/listDetails']" [queryParams]="{id:data.id,state:data.state}">{{data.name}}</p>

这里数据我是直接拿上去的,同样你可以组织好数据,一个参数放上去,简化html结构,现在有个问题,这样多值传入路由参数怎么配置呢?/:id/:id???我这个参数多少也不是固定的咋办?其实这种方式不需要配置路由!你只需要传入和取到数据就可以了!

ngOnInit() {
  this.route.queryParams
   .subscribe((params: Params) => {
    this.id = params['id'];
    this.state = params['state'];
    console.log(params)
    console.log(this.id);
    console.log(this.state);

   })
 }

以上就是Angular路由传值两种方式!希望对大家有帮助!也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery中选择块并改变属性值的方法
Jul 31 Javascript
iframe子页面获取父页面元素的方法
Nov 05 Javascript
使用JavaScript实现Java的List功能(实例讲解)
Nov 07 Javascript
JavaScript编程中的Promise使用大全
Jul 28 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
Nov 05 Javascript
jQuery 移动端artEditor富文本编辑器
Jan 11 Javascript
JavaScript仿商城实现图片广告轮播实例代码
Feb 06 Javascript
微信小程序中单位rpx和rem的使用
Dec 06 Javascript
JavaScript简单拖拽效果(1)
May 17 Javascript
详解Vue This$Store总结
Dec 17 Javascript
jquery实现进度条状态展示
Mar 26 jQuery
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
Mar 31 jQuery
详解Angular5 路由传参的3种方法
Apr 28 #Javascript
深入理解Vue nextTick 机制
Apr 28 #Javascript
jQuery实现的电子时钟效果完整示例
Apr 28 #jQuery
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 #jQuery
Vue实现PopupWindow组件详解
Apr 28 #Javascript
详解angular路由高亮之RouterLinkActive
Apr 28 #Javascript
vue弹窗组件使用方法
Apr 28 #Javascript
You might like
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
jQuery的一些注意
2006/12/06 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
Python编码时应该注意的几个情况
2013/03/04 Python
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
python中偏函数partial用法实例分析
2015/07/08 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
Python用SSH连接到网络设备
2021/02/18 Python
UNIX文件类型
2013/08/29 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
小学教师教育随笔
2015/08/14 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js