• 13-angular中的路由


     路由就是根据不同的url地址,动态的让根组件挂载其他组件来实现一个单页面应用

    一、Angular 创建一个默认带路由的项目

    1. 命令创建项目

    ng new angularRoute --skip-install

    2. 创建需要的组件

    ng g component components/news

    ng g component components/home

    ng g component components/product

    3. 找到 app-routing.module.ts 配置路由

    import { NgModule } from '@angular/core';
    import { Routes, RouterModule } from '@angular/router';
    
    import { NewsComponent } from './components/news/news.component';
    import { HomeComponent } from './components/home/home.component';
    import { ProductComponent } from './components/product/product.component';
    
    
    
    const routes: Routes = [
    {
    path:'home',component:HomeComponent
    
    },
    {
      path:'news',component:NewsComponent
      
      },
      {
        path:'product',component:ProductComponent
        
        },
    
    
    ];
    
    @NgModule({
      imports: [RouterModule.forRoot(routes)],
      exports: [RouterModule]
    })
    export class AppRoutingModule { }

    路由配置成功

     4. 找到 app.component.html 根组件模板 ,配置 router-outlet 显示动态加载的路由

    <h1>
    <a routerLink="/home">首页</a>
    <a routerLink="/news">新闻</a>
    </h1>
    <router-outlet></router-outlet>

    二 、Angular routerLink 跳转页面 默认路由

    找到 app-routing.module.ts 配置默认路由

    //匹配不到路由的时候加载的组件 或者跳转的路由
    {
    path: '**', /*任意的路由*/
    // component:HomeComponent
    redirectTo:'home'
    }

    三、Angular routerLinkActive 设 置routerLink 默认选中路由

    根.html

    <h1>
    <a routerLink="/home" routerLinkActive="active">首页</a>
    <a routerLink="/news" routerLinkActive="active">新闻</a>
    </h1>

    .active{
    color:red;
    }

    四 、动态路由

     创建新闻详情页面

    ng g component components/newscontent

     Angular中路由传值(get传值、动态路由)以及通过js跳转路由(2)(26分53秒)

     get传值

    /*
    
    
        1、跳转
          <li *ngFor="let item of list;let key=index;">
              <!-- <a href="/newscontent?aid=123">{{key}}--{{item}}</a> -->
                  
              <a [routerLink]="['/newscontent']" [queryParams]="{aid:key}">{{key}}--{{item}}</a>
    
            </li>
    
    
    
          2、接收
    
            import { ActivatedRoute } from '@angular/router';
    
            constructor(public route:ActivatedRoute) { }
    
          this.route.queryParams.subscribe((data)=>{
    
                console.log(data);
          })

    动态路由

    
    动态路由
    
    
          1、配置动态路由
    
           {
    
            path:'newscontent/:aid',component:NewscontentComponent
          }
    
    
          2、跳转
    
    
            <ul>
            <li *ngFor="let item of list;let key=index;">
    
              <a [routerLink]="[ '/newscontent/', key ]">{{key}}---{{item}}</a>
    
            </li>
          </ul>
    
    
          3、接收
    
           import { ActivatedRoute } from '@angular/router';
    
            constructor(public route:ActivatedRoute) { }
    
            this.route.params.subscribe((data)=>{
    
                  console.log(data);
            })
    */
    
    
    import { Component, OnInit } from '@angular/core';
    
    import { ActivatedRoute } from '@angular/router';
    
    @Component({
      selector: 'app-newscontent',
      templateUrl: './newscontent.component.html',
      styleUrls: ['./newscontent.component.scss']
    })
    export class NewscontentComponent implements OnInit {
    
      constructor(public route:ActivatedRoute) { }
    
      ngOnInit() {
    
          // console.log(this.route.queryParams);
    
        
         /*
    
         get传值
          this.route.queryParams.subscribe((data)=>{
    
            console.log(data);
          })
    
         
         */
    
    
    
         //获取动态路由传值
          this.route.params.subscribe((data)=>{
    
            console.log(data);
          }
      }
    
    }

    五 、 动态 路由的 js 跳转

    被引页面操作

    1. 引入
    import { Router } from '@angular/router';
    2. 初始化 export class HomeComponent implements OnInit { constructor(private router: Router) { } ngOnInit() { } goNews(){ // this.router.navigate(['/news', hero.id]); this.router.navigate(['/news']); } }
    3. 路由跳转 this.router.navigate(['/news', hero.id]);

    六 、路由 get 传值 js 跳转

    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. 获取 get 传值 constructor(private route: ActivatedRoute) { console.log(this.route.queryParams); }

     七、父子路由

    1. 创建组件引入组件

     例如:home组件下的welcome和setting组件

    ng g componnent components/home/welcome

    在app-routing.module.ts配置组件路由

    嵌套路由配置:

    父路由下配置子路由

     父组件中定义

    3. 父组件中定义 router-outlet

     <router-outlet></router-outlet>

  • 相关阅读:
    C#中委托和事件的区别
    Linux centos7 计划任务与日志的管理
    linux shell检查字符串是否是IP
    Linux脚本中$#、$0、$1、$@、$*、$$、$?
    Linux命令学习之shift命令
    CentOS7编写systemd服务脚本
    java数据类型转换
    centos7 升级openssh到openssh-8.3p1版本
    oracle的簇的创建
    oracle 分区表的维护
  • 原文地址:https://www.cnblogs.com/foremostxl/p/12958064.html
Copyright © 2020-2023  润新知