angular js 默认选中_【Angular】路由routerLink

e1291c88a0836bfdf9ab295ea8b92b13.gif

路由配置和路由跳转示例

1.创建好项目后,创建以下示例组件:

ng g component components/home
ng g component components/news

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

//引入组件
import { HomeComponent } from './home/home.component';
import { NewsComponent } from './news/news.component';

3.配置路由

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
import { NewsComponent } from './components/news/news.component';
const routes: Routes = [
  { path: 'home', component: HomeComponent },
  { path: 'news', component: NewsComponent },
  // 下面是默认路由
  {
    path: '',
    redirectTo: '/home',
    pathMatch: 'full'
  }
];


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

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

<div >

  <h1>
    
    {{ msg }}
  h1>

  <app-header #headerChild>app-header>
  <h1>
    <a routerLink="/home" routerLinkActive="active">首页a>        
    <a routerLink="/news" routerLinkActive="active">新闻a>
  h1>
<router-outlet>router-outlet>

说明:Angular routerLinkActive 设置 routerLink 默认选中路由样式

将样式配置到全局样式src.style.scss中:

/* You can add global styles to this file, and also import other style files */
.active{
    color:red;
}

运行效果,效果:

99d4c59888ec9c385073cdd93865731e.gif

动态路由的使用

1,再创建一个详情组件

ng g component components/detail

2.配置路由

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
import { NewsComponent } from './components/news/news.component';
import { DetailComponent } from './components/detail/detail.component';
const routes: Routes = [
  { path: 'home', component: HomeComponent },
  { path: 'news', component: NewsComponent },
  { path: 'detail/:id', component: DetailComponent },
  // 下面是默认路由
  {
    path: '',
    redirectTo: '/home',
    pathMatch: 'full'
  }
];


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

3.跳转传值

news.component.html

<p>我是新闻组件p>
<a [routerLink]="[ '/detail/',aid]">跳转到详情a> 
<a routerLink="/detail/{{aid}}">跳转到详情a>

news.component.ts

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-news',
  templateUrl: './news.component.html',
  styleUrls: ['./news.component.scss']
})
export class NewsComponent implements OnInit {
  aid = "news4200"
  constructor() { }

  ngOnInit(): void {
  }

}

获取动态路由的值:

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

  constructor( private route: ActivatedRoute) { }
  id;
  ngOnInit(): void {
    console.log(this.route.params);
    this.route.params.subscribe(data=>this.id=data.id);
  }


}

运行项目,点击新闻中,跳转到详情按钮:

eb2dd2011edf48d5f2d8c45ade345e0a.png

8b2fc83efc0a9110c32f104d41f9204f.png

动态路由的 js 跳转

1.引入

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

2.初始化

constructor(private router: Router) {
}

3.路由跳转

// this.router.navigate(['/detail']);//不传值
this.router.navigate(['/detail',"56465"]);//传值

示例:

news.component.ts

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
  selector: 'app-news',
  templateUrl: './news.component.html',
  styleUrls: ['./news.component.scss']
})
export class NewsComponent implements OnInit {
  aid = "news4200"
  constructor(private router: Router) { }

  ngOnInit(): void {
  }
  goDetail(){
     this.router.navigate(['/detail',"56465"]);
  }
}

news.component.html

<button (click)='goDetail()'>跳转到详情button>

运行项目,效果:

61e960598c317731819ab41233d7f892.png

NavigationExtras传值 js 跳转

1、路由配置

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
import { NewsComponent } from './components/news/news.component';
import { DetailComponent } from './components/detail/detail.component';
const routes: Routes = [
  { path: 'home', component: HomeComponent },
  { path: 'news', component: NewsComponent },
  { path: 'detail', component: DetailComponent },
  // 下面是默认路由
  {
    path: '',
    redirectTo: '/home',
    pathMatch: 'full'
  }
];


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

2.跳转传值

news.component.ts

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

  constructor(private router: Router) { }

  ngOnInit(): void {
  }
  goDetail() {
    let navigationExtras: NavigationExtras = {
      queryParams: { 'id': '8888' },
    };
    this.router.navigate(['/detail'], navigationExtras);
  }
}

news.component.html

<p>我是新闻组件p>


<button (click)='goDetail()'>跳转到详情button>

3.获取值

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

  constructor(private route: ActivatedRoute) {
    console.log(this.route.queryParams);
}
  
  ngOnInit(): void {
    
  }


}

4.运行项目

f4b192ca64fa5c90513541188d9dff56.png

父子路由

1.创建子组件

ng g component components/newsadd
ng g component components/newslist

2.引入组件,配置路由

app-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
import { NewsComponent } from './components/news/news.component';
import { DetailComponent } from './components/detail/detail.component';
import { NewaddComponent } from './components/newadd/newadd.component';
import { NewslistComponent } from './components/newslist/newslist.component';
const routes: Routes = [
  { path: 'home', component: HomeComponent },
  {
    path: 'news', component: NewsComponent,
    children: [
      {
        path: 'newslist',
        component: NewslistComponent
      }, {
        path: 'newsadd',
        component: NewaddComponent
      }]
  },
  { path: 'detail', component: DetailComponent },
  // 下面是默认路由
  {
    path: '',
    redirectTo: '/home',
    pathMatch: 'full'
  }
];


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

3.父组件定义:

示例

<p>我是新闻组件p>


<div class="content">

    <div class="left">
  
 
        <a [routerLink]="[ '/news/newsadd']" routerLinkActive="active">   新闻添加a>
        <br>

        <br>
        <a [routerLink]="[ '/news/newslist']" routerLinkActive="active">   新闻列表a>
  
    div>
  
    <div class="right">
  
      <router-outlet>router-outlet>
  
    div>
  
  div>

运行项目,效果:

c63880ce7c8cabdbb7d448241548e254.png

  码上加油站

  一起来加油

长按扫码关注

0c31ab05b87de2d604a4ff4f04b01ae0.png 记得点个 在看 哦!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值