angular的路由

1.路由引入

import { AppRoutingModule } from './app-routing.module'; 

//app.module引入router的文件

@NgModule({
  declarations: [
    AppComponent,
    HeaderComponent,
    DetailComponent,
    DetailQueryComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    FormsModule,
    HttpClientModule,
    HttpClientJsonpModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})

// imports注入声明

2. app-routing.module里面进行路由的定义

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HeaderComponent } from './components/header/header.component';
import { DetailComponent } from './components/detail/detail.component';
import { DetailQueryComponent } from './components/detail-query/detail-query.component';

// 引入路由模块和相应要定义的组件页面

const routes: Routes = [
  {
    path: 'header',  // 页面的路径
    component: HeaderComponent  // 页面的组件
  },
  {
    path: 'detail/:id',  // 页面的动态参数 id
    component: DetailComponent
  },
  {
    path: 'detailQuery',
    component: DetailQueryComponent
  },
  {
    path: '**', // 默认路由  当路径匹配没有组件时候,到这里,就是输入路由错误
    redirectTo: 'header'  // 重定向到 header
  }
];

// 定义路由的数组 

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

// 装饰器模块定义

export class AppRoutingModule { }

3. 路由的页面的使用,挂载到router-outlet标签这里

angular的路由

4.页面里面的路由跳转,分动态路由param和get(query)路由

<a [routerLink]="[ '/detail/', pm ]">跳转详情</a>

//routerLink变量 动态路由第一个参数是路径path, 第二个参数就是前面定义的id,这里的pm是个变量
 

<a [routerLink]="[ '/detailQuery/' ]" [queryParams]="{id:'qq'}">跳转get详情</a>

// get跳转 routerLink对应的是页面参数, 参数是通过queryParams传值,json形式
// 路由会变成 /detailQuery?id=qq 这种形式

5. 获取传过来的路由参数

import { ActivatedRoute } from '@angular/router';

// 引入当前路由ActivatedRoute



constructor(public router: ActivatedRoute) { }  // 注入声明

this.router.paramMap.subscribe((res) => {

   console.log(res.get('id'), '----id----'); // 通过get方法获取到

});

// 动态路由的获取方式



this.router.queryParamMap.subscribe((res) => {

   console.log(res.get('id'));

});

// get路由的获取值的方式 

6. 动态js进行页面跳转

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

// 引入 Router模块  NavigationExtras 用于get跳转传值


jumpRoute() {

  const query: NavigationExtras = {
     queryParams: {
       id: '666'
     }
  }; // get跳转的参数

  this.router.navigate(['/detailQuery/'], query);

}
// get 动态js路由跳转




jumpRouteParams() {

  this.router.navigate(['/detail/', 'id-222']); // 第二个参数就是动态参数

}

// param动态参数的js跳转

7.嵌套路由 children定义  然后在html中加入router-outlet标签,会映射到这里

angular的路由

angular的路由