详解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 相关文章推荐
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
Jan 16 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
Jan 24 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
Feb 05 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
May 06 Javascript
js重写alert控件(适合学习js的新手朋友)
Aug 24 Javascript
jQuery 局部div刷新和全局刷新方法总结
Oct 05 Javascript
JS返回顶部实例代码
Aug 09 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
vue移动端微信授权登录插件封装的实例
Aug 28 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
May 22 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
解决vue-router 切换tab标签关闭时缓存问题
Jul 22 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 5.0对象模型深度探索之对象复制
2008/03/27 PHP
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
php不用正则验证真假身份证
2013/11/06 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
Python实现SMTP发送邮件详细教程
2021/03/02 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
pycharm快捷键汇总
2020/02/14 Python
Python几种常见算法汇总
2020/06/02 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
素食餐饮项目创业计划书
2014/02/02 职场文书
门店业绩提升方案
2014/06/08 职场文书
谢师宴答谢词
2015/01/05 职场文书
Golang日志包的使用
2022/04/20 Golang
教你如何用cmd快速登录服务器
2022/06/10 Servers