想学会angular4x建议看看这个https://segmentfault.com/a/1190000008754631
<https://segmentfault.com/a/1190000008754631>入门教程,以下是工作中的总结:

一、路由

1、Routes

路由配置,保存着哪个URL对应展示哪个组件,以及在哪个RouterOutlet中展示组件

2、RouterOutlet

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

3、Router

负责在运行时执行路由的对象,可以通过调用其navigate()和navigateByUrl()方法来导航到一个指定的路由

4、RouterLink

在Html中声明路由导航用的指令

5、ActivatedRoute

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

import { Router, ActivatedRoute, Params } from '@angular/router';

snapshot --- 参数快照

subscribe ----参数订阅

constructor(

    private route: ActivatedRoute,

    private router: Router,

   ) { }

第一种:查询参数中

跳转路由:

<a [routerLink]="['/product']" [queryParams]="{id:1}">商品</a>      ?问号;号



this.router.navigate(['login', 1],{ queryParams: { id: 1 } });



获取参数

this.route.snapshot.queryParams["id"]

 

第二种:路由中

{ path: '/profile/:id', component: ProfileComponent }

获取参数:

this.route.snapshot.params["id"]

this.router.params.subscribe((params:Params) => this.id = params.id);

1.以根路由跳转/login

this.router.navigate(['login']);

2.设置relativeTo相对当前路由跳转,route是ActivatedRoute的实例,使用需要导入ActivatedRoute

this.router.navigate(['login', 1],{relativeTo: route});

3.路由中传参数 /login?name=1

this.router.navigate(['login', 1],{ queryParams: { name: 1 } });

4.preserveQueryParams默认值为false,设为true,保留之前路由中的查询参数/login?name=1 to /home?name=1

this.router.navigate(['home'], { preserveQueryParams: true });

5.路由中锚点跳转 /home#top

this.router.navigate(['home'],{ fragment: 'top' });

6.preserveFragment默认为false,设为true,保留之前路由中的锚点/home#top to /role#top

this.router.navigate(['/role'], { preserveFragment: true });

7.skipLocationChange默认为false,设为true,路由跳转时浏览器中的url会保持不变,但是传入的参数依然有效

this.router.navigate(['/home'], { skipLocationChange: true });

8.replaceUrl默认为true,设为false,路由不会进行跳转

this.router.navigate(['/home'], { replaceUrl: true });

  ###辅助路由

插座 outlet

思路:

  1、在APP组件的模板上再定义一个插座来显示聊天面板

  2、单独开发一个聊天室组件,只显示在新定义的插座上

  3、通过路由参数控制新插座是否显示聊天面板

 

###路由守卫

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

CanActivateChild:处理导航到某子路由的情况

CanDeactivate:处理从当前路由离开的情况

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

CanLoad:处理异步导航到某特性模块的情况

注意事项

1、 <base> 标签添加到我们的 index.html 文件

2、根模块中使用 forRoot(),子模块中使用 forChild()

3、使用一个名为 router-outlet 的指令告诉 Angular 在哪里加载组件

4、动态路由 { path: '/profile/:username', component: ProfileComponent }

另一个很有用的路由功能是 component-less 路由:

https://segmentfault.com/a/1190000009265310

* 使用 component-less 路由允许我们将路由组合在一起,并让它们共享路由配置信息和 outlet。
* 需要注意的是,我们没有将 SettingsModule 导入到我们的 AppModule 中,而是通过 loadChildren 属性,告诉
Angular 路由依据 loadChildren 属性配置的路径去加载 SettingsModule 模块。这就是模块懒加载功能的具体应用,当用户访问 
/settings/** 路径的时候,才会加载对应的 SettingsModule 模块,这减少了应用启动时加载资源的大小。
数据绑定:













 



 

output:



 



 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信