Angular4-路由

目标

实现这样一个页面,通过路由跳转不同界面
这里写图片描述

// 创建项目
ng new demo --routing
// 创建component
ng g component components/index
ng g component components/container
ng g component components/shop
ng g component components/shopList
ng g component components/shopManager

路由配置 使用RouterLink跳转

在app-routing-module.ts中:

const routes: Routes = [
  {
    path:"index",
    component:IndexComponent,
    children: // 父子路由
    [
      {
        path:"**", // 默认页面
        component:ContainerComponent
      }
    ]
  },
  {
    path:"shop",
    component:ShopComponent,
    children:
    [  
      {
        path:"shopList",
        component:ShopListComponent
      },
      {
        path:"shopManager",
        component:ShopManagerComponent
      }
    ]
  },
  {
    path:"**",
    redirectTo:"/index" // 重定向
  }
];

在app.component.html中:

<h1>
  <a routerLink="/index" routerLinkActive="active">首页</a>
  <a routerLink="/shop" routerLinkActive="active">商品</a>
</h1>
<router-outlet></router-outlet>

注意使用<router-outlet></router-outlet>来表明在什么地方界面路由页面
在shop.component.html中:

<div class="left">
    <ul>
      <li>
        <a routerLink="/shop/shopList" routerLinkActive="active">商品列表</a>
      </li>
      <li>
        <a routerLink="/shop/shopManager" routerLinkActive="active">商品管理</a>
      </li>
    </ul>
</div>

<div class="right">
    <router-outlet></router-outlet>
</div>
动态路由中传值

先创建一个商品详情组件:

ng g component components/shopInfo

配置路由:

{
    path:"shopInfo/:id", // 动态传值
    component:ShopInfoComponent
}
// html文件中:
<ul>
  <li *ngFor="let item of list;let i = index">
    <a routerLink="/shopInfo/{{item.id}}">{{item.name}}</a>
  </li>
</ul>
获取传值

首先在要获取值的页面引入ActivatedRoute:

import { ActivatedRoute} from "@angular/router";
constructor(private route:ActivatedRoute) 
{
}
ngOnInit() 
{
  //console.log(this.route.params);
  // 获取的是个Observable对象
  this.route.params.subscribe(function(data)
  {
    console.log(data);
  });
}

js跳转

需要跳转的页面引入Router依赖
import { Router} from "@angular/router";
constructor(private router:Router) { }
// html 文件中:
<button (click)="onClick()">js跳转</button>
// ts文件中:
onClick()
{
  this.router.navigate(["/hot"]);
}
js跳转传值
import { Router,NavigationExtras} from "@angular/router";
constructor(private router:Router) { }
// html 文件中:
<button (click)="onClick(123456)">js跳转</button>
// ts文件中:
onClick(id)
{
    let navigationExtras:NavigationExtras={
         queryParams:{"id":id}
       };
    this.router.navigate(["/hot"],navigationExtras);
}
接收js跳转传值
import { ActivatedRoute} from "@angular/router";
constructor(private routed:ActivatedRoute) { }
ngOnInit() 
{
    this.routed.queryParams.subscribe(function(data)
    {
      console.log(data);
    });
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值