angular路由笔记_详解angular笔记路由之angular-router

本文介绍了angular笔记路由之angular-router,分享给大家,具体如下:

创建项目

ng new router --routing

\\ 加routing参数

\\ 会新增一个app-routing.module.ts 文件

路由的基本使用

名称

简介

Routes

路由的配置,保存着哪一个URL对应展示哪一个组件和在哪一个RouterOutler展示

RouterOutler

在HTML中标记路由内容呈现的占位符指令

Router

运行时执行的路由对象,可以通过navigate()和navigateByUrl()方法来导航到指定路由

RouterLink

在HTML中声明导航的指令

ActivatedRoute

当前激活的路由对象,保存着当前路由信息,路由地址,路由参数

路由对象图示

路由基本配置

const routes:Routes = [

{path:'',component:HomeComponent}, \\ 注意path里面不要加\线

{path:'app',component:AdminComponent}

];

路由通配符配置

{path:'**',component:Code404Component}

// 配置里面加一条代表没有的都往这里,注意这里不能写在前面,不然angualr的路由会优先匹配这里

HTML里面跳转链接

主页

后台

在js里面跳转路由

constructor(private router:Router){

}

// 点击事件

toApp(){

this.router.navigate(['/app'])

}

路由数据传递

1、在查询参数中传递数据

/app?id=2 => ActivatedRoute.queryParams[id]

//html写法

后台

// js写法

private appId:number

constructor(private routerInfo:ActivatedRoute) { }

ngOnInit() {

this.appId = this.routerInfo.snapshot.queryParams['id']

}

2、在路由路径中传递数据

{path:/app/:id} => /app/1 => ActivatedRoute.params[id]

// 必须先定义好

后台

3、在路由配置中传递数据

{path:/product,component:Appcomponent,data:[IsProd:true]}  => ActivatedRoute.data[0][IsProd]

参数快照和参数订阅

snapshot 是参数快照当路由进入该组件的时候,然后再点击按钮进入该路由路由里面的的ngOnInit()方法只执行一次,已经被激活,说以第二次这个不会被执行

ngOnInit() {

this.appId = this.routerInfo.snapshot.queryParams['id']

}

subscribe 是参数订阅,这个属于RxJs的东西

private appId:number

constructor(private routerInfo:ActivatedRoute) { }

ngOnInit() {

this.routerInfo.params.subscribe((params:Params) => {

this.appId = params['id']

})

}

重定向路由

{path:'',redirectTo:'/home',pathMatch:'full'},

子路由

{path:'home',component:HomeComponent,children:[

{path:'',component:IndexComponent}

]},

// 记得去HomeComponent,里面添加指令

辅助路由

// html 视图部分

//路由配置部分

{path:'app',Appcomponet,outlet:'aux'}

路由守卫

只有当用户已经登录并拥有一些权限时才能进入

多表单组成的向导,如注册流程,只有满足条件才能进入下一个路由

用户执行操作没有保存,试图离开时候进行相关提示

名称

说明

CanAxtivate

处理导航到某路由

CanDeactivate

处理当前路由离开

Resolve

在路由激活前获取路由数据

1.CanAxtivate的使用

// 新建一个文件

import {CanActivate} from '@angular/router'

export class LoginGuard implements CanActivate{

// 路由会根据这个方法的返回如果返回false就拒绝访问

canActivate(){

let isLOgin:boolean = true;

return isLOgin;

}

}

canActivate是一个数组,可以接收多个,当每一个都返回true时候才允许

// 修改路由配置,添加一个属性canActivate

{path:'home',component:HomeComponent,children:[

{path:'',component:IndexComponent}

],canActivate:[LoginGuard]},

修改NgModule

providers:[LoginGuard]

2.CanDeactivate的使用

// 新建一个文件

import {CanDeactivate} from '@angular/router'

import {AppComponent} from "../app.component";

/**

* 处理用户离开

* 接收一个泛型

*/

export class OutGuard implements CanDeactivate{

// component 里面保存着AppComponent的数据

canDeactivate(component:AppComponent){

return window.confirm('您还没有保存确定要离开吗?')

}

}

修改路由的配置

{path:'home',component:HomeComponent,children:[

{path:'',component:IndexComponent}

],canActivate:[LoginGuard],canDeactivate:[OutGuard]},

providers:[LoginGuard,OutGuard]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值