【Angular】路由

一、什么是路由
个人理解,路由就是从一个页面跳转到另一个页面。


二、在路由时传递数据
在路由时传递数据有三种方式

  • 一在查询参数中传递数据
/product?id=1&name=2  => ActivatedRoute.queryParams[id]

1.app.component.html 中写一个参数进行传参
这里写图片描述
2.页面展示,点击商品详情,地址栏出现 ?id=1,这就是刚刚我给它传的参。
这里写图片描述
3.product.component.ts 接收传入进来的参数id
这里写图片描述
4.product.component.html
这里写图片描述
5.页面展示,下面显示商品ID为1,在第二步,只是地址栏显示id
这里写图片描述

- 二在路由路径中传递数据

{path:/product/:id} => /product/1 => ActivatedRoute.Params[id]

- 三在路由配置中传递数据

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

三、重定向路由
在用户访问一个特定的地址时,将其重定向到另一个制定的地址。

www.aaa.com => www.aaa.com/products
www.aaa.com/x => www.aaa.com/y  //x——y

四、子路由

{path:'home',component:HomeComponent}

{path:'home',component:HomeComponent,
    children:[
        {
            path:'',component:XxxComponent,
        },
        {
            path:'/yyy' component:YyyComponent
        }
        ]
}

五、辅助路由

<router-outlet></router-outlet>
<router-outlet name="aux"></router-outlet>

{path: 'xxx',component:XxxComponent,outlet:"aux"}
{path: 'yyy',component:YyyComponent,outlet:"aux"}

<a [routerLink]= "['/home' ,{outlets:{aux: 'xxx'}}]">Xxx</a>
<a [routerLink]= "['/product' ,{outlets:{aux: 'yyy'}}]">Yyy</a>

案例整体思路
在app组件的模板上再定义一个插座来显示聊天慢板
单独开发一个聊天室组件,只显示在新定义的插座上
通过路由参数控制新插座是否显示聊天面板


六、路由守卫

在那些场景下用户可以进入路由及离开路由:
只有当用户已经登录并拥有某些权限时才能进入某些路由。
一个由多个表单组件组成的向导,例如注册流程,用户只有在当前路由的组件中填写了满足需求的信息才可以导航到下一个路由。
当用户未执行保存操作而试图离开当前导航时提醒用户。

路由守卫有三种情况:
CanActivate:处理导航到某路由的情况
CanDeactivate:处理从当前路由离开的情况
Resolve:在路由激活之前获取路由数据


总结
项目中多实践吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值