Angular 路由传参的两种方式

文章介绍了在Angular应用中如何使用RouterModule进行路由配置,并通过queryParams和params传递参数,以及在FirstComponent和SecondComponent中处理这些参数的方法。
摘要由CSDN通过智能技术生成

定义路由

app-routing.module.ts

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { FirstComponent } from './first/first.component';
import { SecondComponent } from './second/second.component';

const routes: Routes = [
  { path: 'first-component/:id', component: FirstComponent },
  { path: 'second-component', component: SecondComponent },
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

一 通过queryParams传递


app.component.html

<a routerLink="/second-component" routerLinkActive="active" ariaCurrentWhenActive="page" [queryParams]="{age:'11',name:'test'}">Second Component</a>
<router-outlet></router-outlet>

使用[queryParams]绑定要传递的参数(适用于传递json对象) 也可以绑定后台定义的某些对象

点击链接跳转后 地址栏中显示的URL格式为:RoutingAppicon-default.png?t=N6B9http://localhost:4200/second-component?age=11&name=test


second.component.ts

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
  selector: 'app-second',
  templateUrl: './second.component.html',
  styleUrls: ['./second.component.css']
})
export class SecondComponent implements OnInit {

    constructor(private _activatedRoute:ActivatedRoute){
    }
  ngOnInit(): void {
    // 静态获取 只能获取初始化的参数
    const param = this._activatedRoute.snapshot.queryParams;
    console.log(param,'param');

    // 自动获取 只要路由中的参数发生变化 就能检测到 订阅的方式进行获取的
    this._activatedRoute.queryParams.subscribe(x=>{
      console.log(x,'xxxxx')
    })
  }
}

二 通过params传递

app.component.html

<a routerLink="/first-component/1" routerLinkActive="active" ariaCurrentWhenActive="page">First Component</a>
<router-outlet></router-outlet>

要使用该方式传参 路由path需要额外设置参数 详见定义路由 同样也可以绑定后台定义的某些对象 (PS:如果使用该方式传递参数不在路由中做对应设置 点击链接后会报错)

点击链接跳转后 地址栏中显示的URL格式为:

RoutingAppicon-default.png?t=N6B9http://localhost:4200/first-component/1

first.component.ts

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
  selector: 'app-first',
  templateUrl: './first.component.html',
  styleUrls: ['./first.component.css']
})
export class FirstComponent implements OnInit {
  constructor(private _activatedRoute:ActivatedRoute){}

  ngOnInit(): void {
    const param = this._activatedRoute.snapshot.params;
    console.log(param,'param');

    this._activatedRoute.params.subscribe(x=>{
      console.log(x)
    })
  }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Angular中,可以使用参数传递来向组件传递数据。有几种不同的方式可以实现参数传递: 1. 通过路由传递参数:可以在路由配置中定义参数,并在URL中传递参数值。在组件中,可以使用ActivatedRoute服务来访问传递的参数。例如: 在路由配置中: ``` { path: 'example/:id', component: ExampleComponent } ``` 在组件中: ```typescript import { ActivatedRoute } from '@angular/router'; constructor(private route: ActivatedRoute) { } ngOnInit() { this.route.params.subscribe(params => { const id = params['id']; // 使用传递的参数 }); } ``` 2. 通过属性绑定传递参数:可以在组件模板中使用属性绑定来传递参数。在父组件中,使用属性绑定将数据传递给子组件。在子组件中,通过@Input装饰器接收传递的参数。例如: 在父组件模板中: ```html <app-child [param]="value"></app-child> ``` 在子组件中: ```typescript import { Input } from '@angular/core'; @Input() param: any; // 使用传递的参数 ``` 3. 通过服务传递参数:可以创建一个共享的服务,在多个组件之间共享数据。在提供者中定义一个属性来保存要传递的参数,在需要使用参数的组件中注入该服务并访问参数。例如: 创建一个参数服务: ```typescript import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class ParamService { param: any; } ``` 在组件中使用参数服务: ```typescript import { ParamService } from './param.service'; constructor(private paramService: ParamService) { } ngOnInit() { const param = this.paramService.param; // 使用传递的参数 } ``` 以上是一些常见的Angular中传递参数方式,你可以根据你的需求选择适合的方式来传递参数。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值