详解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 23 Javascript
JavaScript Event学习第十章 一些可替换的事件对
Feb 10 Javascript
jQuery第三课 修改元素属性及内容的代码
Mar 14 Javascript
js 取时间差去掉周六周日实现代码
Dec 25 Javascript
js模仿jquery的写法示例代码
Jun 16 Javascript
jQuery实现产品对比功能附源码下载
Aug 09 Javascript
省市区三级联动jquery实现代码
Apr 15 Javascript
JavaScript实现的微信二维码图片生成器的示例
Oct 26 Javascript
浅谈vue加载优化策略
Mar 19 Javascript
vue改变对象或数组时的刷新机制的方法总结
Apr 24 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 Javascript
RxJS在TypeScript中的简单使用详解
Apr 13 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
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
javascript IFrame 强制刷新代码
2009/07/23 Javascript
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
详解JavaScript修改注册表的方法
2020/01/05 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python找出完数的方法
2018/11/12 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
python 的topk算法实例
2020/04/02 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
英国绿色商店:Natural Collection
2019/05/03 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
物流专业毕业生推荐信范文
2013/11/18 职场文书
法学专业毕业生自荐信范文
2013/12/18 职场文书
高中历史教学反思
2014/02/08 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
总经理聘用协议书
2015/09/21 职场文书
学习新党章心得体会2016
2016/01/15 职场文书
Redis读写分离搭建的完整步骤
2021/09/14 Redis
vue实力踩坑之push当前页无效
2022/04/10 Vue.js
Elasticsearch 批量操作
2022/04/19 Python
Sql Server 行数据的某列值想作为字段列显示的方法
2022/04/20 SQL Server
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript