Angular入门教程 | 07Angular路由跳转传值

1,487 阅读2分钟

路由跳转

在项目创建时,我们勾选路由选项,这样在项目创建好之后就会有路由配置文件app-routing.module.ts,我们现在app.module.ts里面引入路由模块,并且进行配置

import { AppRoutingModule } from './app-routing.module';
imports: [
  AppRoutingModule
]

并且在你需要进行路由跳转的页面(这里我们在根组件页面)app.component.html中,来放置占位符,并且通过a链接的routerLink来进行跳转。其中RouterLinkActive是当前路由被选中时动态添加的类名。

<!-- 放动态加载的组件的 -->
<router-outlet></router-outlet> //这个占位符用来展示路由链接跳转的内容

<a [routerLink]="[ '/home']" RouterLinkActive="active">首页</a>

路由跳转传值

image.png 当我们在新闻组件中点击了一条新闻想要跳转到详情组件,这个时候你就需要你点的是哪条新闻。这个时候就涉及到了跳转页面传值。

动态路由传值

动态路由需要我们在app-routing-module.ts里面进行配置,在path后面通过 :id的这种形式配置动态路由,比如:

// 这个里面是配置路由的
import { NgModule } from '@angular/core';
import { RouterLinkActive, RouterModule, Routes } from '@angular/router';

// 在路由里面引入新建好的组件
import { HomeComponent } from './components/home/home.component';
import { NewsComponent } from './components/news/news.component';
import { GoodsComponent } from './components/goods/goods.component';
import { NewsComtentComponent } from './components/news-comtent/news-comtent.component';
const routes: Routes = [
  // 匹配不到路由的时候跳转的组件
  {
    path:'',component:NewsComponent
  },
  {
    path:'home',component:HomeComponent
  },
  {
    path:'news',component:NewsComponent
  },
  {
    path:'news-comtent/:aid',component:NewsComtentComponent
  },
  {
    path:'goods',component:GoodsComponent
  }

];

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

之后我们在news.component.html中进行数据渲染,以及参数配置

<h1>
我是news组件
</h1>

<a [routerLink]="[ '/news-comtent' ]">新闻详情</a>

<!-- 动态路由 -->
<ul>
    <li *ngFor="let item of list ;let key = index">
      <!-- <a [routerLink]="[ '/news-comtent' ]" [queryParams]="{aid:key}">{{key}}---- {{item}}</a> -->
      <a  [routerLink]="['/news-comtent/' ,key]">{{key}}---{{item}}</a>
</ul>

get传值

通过[queryParams]="{}"的形式来进行传值。例如:在news.component.html

<h1>
我是news组件
</h1>

<a [routerLink]="[ '/news-comtent' ]">新闻详情</a>

<ul>
    <li *ngFor="let item of list ;let key = index">
       <a [routerLink]="[ '/news-comtent' ]" [queryParams]="{aid:key}">{{key}}---- {{item}}</a>  
    </li>
</ul>

接下来需要我们在子组件中接收父组件传过来的值,首先引入ActivatedRoute,接下来在constructor中声明一下constructor(public route:ActivatedRoute){ },之后我们来打印一下route的内容看一下:

image.png

  ngOnInit(): void {
    // console.log(this.route.queryParams,'路由路由');可以从上边看到这样拿不到传过来参数的值
    //我们通过下边的方式来获取传过来的参数值
    this.route.queryParams.subscribe((data)=>{
      console.log(data,'获取get传值');

    })
  }

JS实现页面跳转

动态路由的JS实现页面跳转(适合普通路由和动态路由)

首先在app-routing-module.ts里面进行配置

//1.引入
import { GoodsContentComponent } from './components/goods-content/goods-content.component';

//2.配置
 {
    path:'goods-content/:pid',component:GoodsContentComponent
  }

我们在goods.component.html中放一个按钮和链接用于跳转,

<button (click)="goNewsContent()">javascript跳转页面</button>

<a [routerLink]="['/goods-content/','123']" >跳转到商品详情</a>

goods.component.ts中引入Router模块,然后在constructor进行声明,使用navigate实现跳转

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
  selector: 'app-goods',
  templateUrl: './goods.component.html',
  styleUrls: ['./goods.component.scss']
})
export class GoodsComponent implements OnInit {

  constructor(public router:Router) { }

  ngOnInit(): void {
  }
  goNewsContent(){
    // alert('1222')
    this.router.navigate(['/goods-content/','666'])
  }
}

路由get传值的JS跳转