查看: 41|回覆: 1

angular中路由跳转并传值四种方式

[複製鏈接]

2

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-3-2
發表於 2019-6-28 18:27:00 | 顯示全部樓層 |閲讀模式

一、路由传值

  步骤1 路由传递参数 注意 一定是要传递 索引值 let key = index 这种情况是在浏览器中可以显示对应的参数 这种的是问号 localhost:8080/news?id=2&name=xiaoming

<div class="z-shebei-box1 x-mysh-p"  style="width: 100%;" *ngFor='let item of deviceInfo.list ;let key = index;'>
     <a [routerLink]="['/devicepay']" [queryParams]="{id:key}">
         <ul>
           <li>{{item}}</li>
         </ul>
     </a>
 </div> 

步骤2 接收传过来的参数 注意:接收时通过 queryParams 进行接收

首先:引入 import {ActivatedRoute} from '@angular/router'
再:声明:constructor(public route:ActivatedRoute) { }
接收: // 接收传过来的值
    this.route.queryParams.subscribe((res)=>{
      console.log(res)
    })

 

二、动态路由传值这种情况是在浏览器中可以显示对应的参数 这种的是斜杆 localhost:8080/news/id=2&name=xiaoming

步骤1 在路由中进行配置

 

{ path: 'devicepay/:id',component:DevicepayComponent},

 

步骤2 在html界面中进行跳转

<div class="z-shebei-box1 x-mysh-p"  style="width: 100%;" *ngFor='let item of deviceInfo.list ;let key = index;'>
      <a [routerLink]="['/devicepay/',key]">
           <ul>
            <li>{{item}}</li>
         </ul>
      </a>
  </div>

 

步骤3 在另一界面中接收传过来的参数 注意 :动态路由接收时使用的是 params

引入 import {ActivatedRoute} from '@angular/router'
再:声明:constructor(public route:ActivatedRoute) { }
接收: // 接收传过来的值
    this.route.params.subscribe((res)=>{
      console.log(res)
    })

 

三、动态js进行跳转 主要在方法对象中使用

步骤1 html 中 注意里面传入的key值是 循环中 获取的索引值

<button (click)='gotoDevicePay(key)'>跳转到支付界面</button>

步骤2 路由文件中写入的格式如下

{ path: 'devicepay',component:DevicepayComponent},

 

步骤3 js中 进行路由跳转

//先引入
import { Router} from '@angular/router'
//再声明
constructor( public router:Router) { }

//定义点击事件
gotoDevicePay(key):void{
    //跳转路径 实现的是动态跳转数据
    this.router.navigate(['/devicepay/'],{queryParams:{id:key}})
  }

 

四、通过get方式可以传入多个参数到下一界面

步骤1 引入 NavigationExtras

import { Router ,NavigationExtras} from '@angular/router';

 

步骤2. 定义一个 goNewsContent 方法执行跳转 , 用 NavigationExtras

goNewsContent(){
    let navigationExtras: NavigationExtras = {
    queryParams: { 'session_id': '123' },
    fragment: 'anchor'
    };
    this.router.navigate(['/news'],navigationExtras);
}

步骤3. 获取 传过来的值

constructor(private route: ActivatedRoute) {
   console.log(this.route.queryParams);
}

 



来源:https://www.cnblogs.com/yangxuanxuan/p/11104263.html
回覆

使用道具 舉報

0

主題

720

回帖

4441

積分

琼殿精英

金币
3721
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-5-9 19:16:51 | 顯示全部樓層
看到楼主分享的Angular路由传值的四种方式,总结得很全面呢!刚好我最近也在做Angular项目,正好学习一下。
第一种:路由传值(Query Params)
这种用问号传参的方式确实最直观,URL清晰可见,适合传递非敏感信息。

第二种:动态路由传值(Path Params)
这种斜杠形式的路由更符合RESTful风格,SEO友好,参数作为路径一部分很有意义。

第三种:JS动态跳转
在业务逻辑中跳转很常用,配合queryParams可以传递多个参数。

第四种:NavigationExtras方式
这个方法功能更强大,除了queryParams还能传fragment(锚点),适合复杂场景。

想请教一下楼主:


  • 这四种方式在实际项目中应该如何选择?有没有性能或者安全方面的考虑?
  • 如果传递的参数比较敏感(比如用户token),是不是不适合用queryParams?
  • Angular新版本的路由有没有什么变化或者更好的写法?


另外,感觉楼主的分享对新手特别友好,代码示例也很清晰,希望能出更多Angular相关的教程![s:120]
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部