angular-路由与导航部分梳理

  1. <base herf>元素 带路由的应用都要在index.html上的<head>标签下添加一个<base>元素,来告诉路由该如何合成导航用的URL,如<base herf="/">

  2. Angular的路由是一个可选的服务,用来呈现URL所对应的视图,并不是Angular核心的一部分,而是在它自己的包中: import { RouterModule, Routes } from '@angular/router';
  3. 路由配置,定义路由后,在app.module.ts的imports中,用RouterModule.forRoot()来配置路由;(先引入RouterModule),在特性模块中,配置路由时,只能改用RouterModule.forChild();<br>
注意:path不能以/开头,:id是一个路由参数的令牌(Token);data:存放每个路由有关的任何信息;' '表示默认路径;** 表示当所请求的URL不匹配时,就定义到这里,常用于404页;<br>
  1. 将{*enableTracing:true}作为第二参数传给RouterModule.forRoot()可以将每个导航生命周期的事件初出道浏览器的控制台;
  2. 路由出口:<router-outlet></router-let>,在根级模板中配置,比如:body;路由器会把它添加到DOM中,紧接着在它之后插入到导航到的视图元素;
  3. routerLink可以绑在<a>标签上,根据用户操作导航;<a routerLink="/"></a>
  4. 路由器状态: 在导航时的每个生命周期成功完成时,路由器会构建出一个 ActivatedRoute 组成的树,它表示路由器的当前状态。 可以在应用中的任何地方用 Router 服务及其 routerState 属性来访问当前的 RouterState 值。 RouterState 中的每个 ActivatedRoute 都提供了从任意激活路由开始向上或向下遍历路由树的一种方式,以获得关于父、子、兄弟路由的信息。paramMap:包含一个当前路由的必要参数和可选参数组成的Map对象;queryParamMap:包含一个对所有路由都有效的查询参数组成的map对象;
总结: 应用有一个配置过的路由器。 外壳组件中有一个 RouterOutlet,它能显示路由器所生成的视图。 它还有一些 RouterLink,用户可以点击它们,来通过路由器进行导航。关键词:Router,RouterModule,Routes,Route,RouteOutlet,RouterLink,RouterLinkActive,ActivatedRoute;

  1. 路由器使用匹配者优先的策略来匹配路由;浏览器的初始URL为:localhost:3000/
  • CanActivate 守卫:检查路由的访问权限;
  • CanActivateChild 守卫:检查子路由的访问权限
  • CanDeactivate 守卫:(询问是否丢弃未保存的更改)
  • Resolve 守卫:预先获取路由数据
  • CanLoad 守卫:在加载特性模块之前进行检查;
  1. 构造路由模块: 路由模块的特性:
  • 把路由单独分离出来;
  • 测试特性模块时,可以替换或移除路由模块;
  • 为路由服务提供商(包括守卫和解析器)提供一个共同的地方;
  • 不要声明模块;
  1. 如果确定哪个组件得实例永远不会复用,可以使用快照(Snapshot)来作为Observable得替代品;this.route.snapshot.paramMap.get('id');

  2. 路由守卫: 使用情况: 该用户可能无权导航到目标组件; 可能用户得先登陆认证; 在显示目标组件前,你可能要先保存数据; 在离开组件前,你可能要先保存修改; 你可能要询问用户:你是否要放弃本次修改,而不用保存;

  3. 守卫返回一个值:

    • 如果返回true,导航过程会继续;
    • 返回false,导航过程会终止,守卫返回一个值:且用户留在原地;
  4. 在分层路由的每个级别上,都可以设置守卫; 路由器会先按照从最深的子路由由下往上检查的顺序来检查 CanDeactivate() 和 CanActivateChild() 守卫。 然后它会按照从上到下的顺序检查 CanActivate() 守卫。 如果特性模块是异步加载的,在加载它之前还会检查 CanLoad() 守卫。 如果任何一个守卫返回 false,其它尚未完成的守卫会被取消,这样整个导航就被取消了;

  5. 惰性加载优点:

  • 可以在用户请求是才加载某些特性区;
  • 对于访问部分应用的用户,可以加快加载速度;
  • 可以不通过增加初始加载的包体积,而持续扩充惰性加载特性区的功能;

转载于:https://my.oschina.net/hyzccc/blog/1839581

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值