angular入门基础教程(十二)动态路由数据传参

路由动态传参

业务场景:

  • 点解商品列表页里面的商品,根据每个商品的 id 进入详情页
  • 其他主要就是不同的类型,展示相同页面的不同数据内容

步骤一:

改造 src/app/app.config.ts,在provideRouter里面加入withComponentInputBinding()

js 复制代码
import { provideRouter, withComponentInputBinding } from '@angular/router';

registerLocaleData(zh);

export const appConfig: ApplicationConfig = {
  providers: [
    ...
    //注入路由,加入withComponentInputBinding()
    provideRouter(routes, withComponentInputBinding()),
    ...
  ],
};

步骤二:

改造src/app/app.routes.ts里面加入id参数

js 复制代码
{
    path: 'goods-detail/:id',
    component: GoodsDetailComponent,
    title: '商品详情',
  }

步骤三:

在需要使用理由跳转的页面,注入路由模块的依赖

改造src/app/components/goods-list/goods-list.component.ts

js 复制代码
import { Component } from '@angular/core';
import { RouterModule } from '@angular/router';

@Component({
  ...
  imports: [RouterModule],
  ...
})

步骤四:

改造src/app/components/goods-list/goods-list.component.html,下面两种跳转方式都行

html 复制代码
<li>
  <!-- <a routerLink="/goods-detail/{{1}}" routerLinkActive="true">啤酒</a> -->
  <a [routerLink]="['/goods-detail',1]" routerLinkActive="true">啤酒</a>
</li>

改成迭代的形式

html 复制代码
<div>
  <ul>
    @for (item of goodsList; track $index) {
    <!-- <li><a routerLink="/goods-detail/{{item.id}}">{{item.title}}</a></li> -->
    <li><a [routerLink]="['/goods-detail',item.id]">{{item.title}}</a></li>

    }
  </ul>
</div>

步骤五:

最后在详情页面进行数据的接受,展示

  • 注入路由模块的依赖,ActivatedRoute
js 复制代码
import { Component } from '@angular/core';
// 导入路由模块的依赖,ActivatedRoute
import { ActivatedRoute } from '@angular/router';
@Component({
  selector: 'app-goods-detail',
  standalone: true,
  imports: [],
  templateUrl: './goods-detail.component.html',
  styleUrl: './goods-detail.component.css',
})
export class GoodsDetailComponent {
  goodsId = 0;
  // 注入路由模块的依赖,ActivatedRoute
  constructor(private route: ActivatedRoute) {
    this.route = route;
  }
  ngOnInit() {
    this.route.params.subscribe((params) => {
      this.goodsId = params['id'];
    });
  }
}
  • 展示数据
html 复制代码
<div>
  <h3>{{goodsId}}</h3>
  <p>goods-detail works!</p>
</div>

这样我们就实现了路由动态传参

相关推荐
UrbanJazzerati3 分钟前
掌握 DOM 的基础属性与方法:从操作元素到构建动态效果
前端·面试
hashiqimiya1 小时前
html实现右上角有个图标,鼠标移动到该位置出现手型,点击会弹出登录窗口。
前端·html
古夕1 小时前
前端文件下载的三种方式:a标签、Blob、ArrayBuffer
前端·javascript·vue.js
纯真时光1 小时前
Vue3中pinia状态管理库的使用(Composition API 风格)
前端
万少1 小时前
可可图片编辑 HarmonyOS(5)滤镜效果
前端
Yvonne爱编码1 小时前
后端编程开发路径:从入门到精通的系统性探索
java·前端·后端·python·sql·go
GIS之路2 小时前
GDAL 读取遥感影像数据
前端
IT_陈寒4 小时前
Spring Boot 3.2 新特性全解析:这5个性能优化点让你的应用提速50%!
前端·人工智能·后端
携欢4 小时前
PortSwigger靶场之Stored DOM XSS通关秘籍
前端·xss
LDM>W<4 小时前
Electron下载失败
前端·javascript·electron