详解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 相关文章推荐
JSON 教程 json入门学习笔记
Sep 22 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
Jan 23 Javascript
js处理自己不能定义二维数组的方法详解
Mar 03 Javascript
js通过iframe加载外部网页的实现代码
Apr 05 Javascript
浅析JS原型继承与类的继承
Apr 07 Javascript
Bootstrap对话框使用实例讲解
Sep 24 Javascript
关于js中的鼠标事件总结
Jul 11 Javascript
深入理解Vuex 模块化(module)
Sep 26 Javascript
旺旺在线客服代码 旺旺客服代码生成器
Jan 09 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
May 21 Javascript
微信小程序地图实现展示线路
Jul 29 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
Sep 07 Javascript
详解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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
PHP 字符串分割和比较
2009/10/06 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
php基本函数汇总
2015/07/09 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
javascript 函数调用的对象和方法
2010/07/01 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
详解react-router如何实现按需加载
2017/06/15 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
Python3遍历目录树实现方法
2015/05/22 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
Python 将pdf转成图片的方法
2018/04/23 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
详解django.contirb.auth-认证
2018/07/16 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
电脑饰品店的创业计划书
2014/01/21 职场文书
老公保证书范文
2014/04/29 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android