路由就是根据不同的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>

 

 

posted on 2020-05-25 17:25  foremost  阅读(480)  评论(0编辑  收藏  举报