详解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 相关文章推荐
比较搞笑的js陷阱题
Feb 07 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
Apr 06 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 Javascript
EasyUI布局 高度自适应
Jun 04 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
Oct 17 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
Oct 31 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
Aug 22 Javascript
vue-prop父组件向子组件进行传值的方法
Mar 01 Javascript
JavaScript中this的全面解析及常见实例
May 14 Javascript
详解ES6 CLASS在微信小程序中的应用实例
Apr 24 Javascript
vue点击标签切换选中及互相排斥操作
Jul 17 Javascript
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
详解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的一个登录的类 [推荐]
2007/03/16 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
jQuery 选择器详解
2015/01/19 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
在Python中操作文件之read()方法的使用教程
2015/05/24 Python
Python实现队列的方法
2015/05/26 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
设计总监岗位职责
2013/12/07 职场文书
学期研究性学习个人的自我评价
2014/01/09 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
团结演讲稿范文
2014/05/23 职场文书
社团活动总结报告
2014/06/27 职场文书
五好家庭事迹材料
2014/12/20 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书