详解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 相关文章推荐
图片自动缩小 点击放大
Jul 07 Javascript
非常好用的JsonToString 方法 简单实例
Jul 18 Javascript
JavaScript闭包实例讲解
Apr 22 Javascript
jQuery EasyUI datagrid实现本地分页的方法
Feb 13 Javascript
JS实现支持Ajax验证的表单插件
Mar 24 Javascript
手机图片预览插件photoswipe.js使用总结
Aug 25 Javascript
SVG描边动画
Feb 23 Javascript
js学习总结_选项卡封装(实例讲解)
Jul 13 Javascript
VUE中使用Vue-resource完成交互
Jul 21 Javascript
vue中的event bus非父子组件通信解析
Oct 27 Javascript
vue项目前端知识点整理【收藏】
May 13 Javascript
vue-cli3配置与跨域处理方法
Aug 17 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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
PHP中的cookie不用刷新就生效的方法
2012/02/04 PHP
PHP Reflection API详解
2015/05/12 PHP
PHP图片加水印实现方法
2016/05/06 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
jquery下json数组的操作实现代码
2010/08/09 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
js中运算符&amp;&amp; 和 || 的使用记录
2014/08/21 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
node内置调试方法总结
2018/02/22 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
实现Python与STM32通信方式
2019/12/18 Python
基于python3实现倒叙字符串
2020/02/18 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
python中的测试框架
2020/11/13 Python
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
小学数学教研活动总结
2014/07/01 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书