浅谈angular4,带你入门

想学会angular4x建议看看这个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

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

数据绑定:

output:

猜你喜欢

转载自blog.csdn.net/lbPro0412/article/details/81358953