2.6 angular-路由(Route)

1.single page application(单页应用):主页面只加载一次,不在刷新,只是改变页面上部分内容的应用。

2.Route作用:angular就是一个单页应用,而路由的功能就是来实现在不改变主页的情况下,实现页面局部内容的替换,其原理就是改变页面的视图状态,例如:主页面为商品列表状态,而商品的详情页,就是页面的详情状态。

3.视图状态:spa可以理解为视图状态的集合。

4.Route相关对象: ng new route --routing

    

名称简介
Routes路由配置,保存着那个URL对应展示那个组件,以及在哪个RouterOutlet中展示组件
RouterOutlet在Html中标记路由内容呈现位置的占位符指令
Routerf负者在运行时执行路由的对象,可以通过调用其navigate()和navigateByUrl()方法来导航到一个指定的路由
RouterLink在Html中声明路由导航用的指令
ActivatedRouted当前激活的路由对象,保存着当前路由的信息,如路由地址,路由参数等。
5.Routes组成:path/user,componentA
        
        

6.路由路通配符,实现页面不存在提示页面,路由通配符应放在后面

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

7.路由传递参数:

        路由传递参数有3种方式:

        方式1:在查询参数中传递参数(在html或者控制器时写路径跳转时传参数):

            /product?id=1&name=2     获取参数:ActivatedRoute.queryParams[id]

        方式2:在Routes定义路由路径时定义参数

            定义路径:Routes = [ { path : 'product' ,component: ProductComponent} ]

            跳转路径:/product/1,  获取时  ActivatedRoute.params[id]

        方式3:在路由配置中,利用data[isProduct:true] ,传递参数

            Routes = [ { path: 'product', ProductComponent, data[ { isProduct: true } ] } ]

            获取值:ActivatedRoute.data[0][isProduct]

8.参数快照snapshot,参数订阅:如果有可能路由跳转到自己时,就选择参数订阅获取参数

            参数快照:this.productId = this.routerInfo.snapshot.params[id];

            参数订阅:this.productId = this.routerInfo.subscribe((params: Params) => this.productId = params["id"]);

9.重定向路由:在访问一个特定地址时,重定向另外一个地址 ,用途就是将一个地址指向另外一个地址

        Routes = [ { path:'', redirectTo: '/home' , pathMatch}, { path:'home' , componnent: HomeComponent} ]    

10.子路由:

    { path: '',component: productComponent,

        children:[

                { path:'', component: XxxComponent },

                { path:'/yyy', component: YyyyComponent}

        ]

    }       

11.辅助路由:

    <router-outlet></router-outlet>   --主插座

    <router-outlet name="uax"></router-loutlet>  辅助插座

    { path:'xxx', component: XxxxComponent,outlet:'aux' }

    { path:'yyy', component: YyyyComponent,outlet:'aux' }

    <a [routerLink]="[ {outlets:{primary: 'home', aux:'xxx'}}]">Xxxx</a> --primary可以指定主路由

    <a [routerLink]="['{outlets:{aux:'yyy'}}]">Xxxx</a>

12.路由守卫:

    只有当用户已经登陆并拥有某些权限时才能进入某些路由。

    一个路由由多个表单组件组成的向导,例如注册流程,用户只有在当前路由的组件中填写了满足要求的信息才能导航到下一个路由

    当用户未执行保存操作而试图离开当前导航时提醒用户。

    CanActivate: 处理导航到某路由的情况;

         定义isLogin.ts类并实现CanActivate, 在路由中定义路由守卫,CanActivate:[IsLogin],在NgModule中定义providers:[IsLogin]

    CanDeactivte:处理当前路由离开的情况;

        同CanActivate,但是在实现CanDeactivte<指定需要守卫的路由>

    Resolve:在路由激活之前获取路由数据。

12.Route配置

    const routeConfig = [{ path: '', component: HomeComponent },{path: 'product/:productTitle', component: ProductDetailComponent}]

        imports: [RouterMoudle.forRoot(routeConfig)]    //主路由

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值