angular2 路由
路由是个模块,命令行生成:ng generate module routerTest;
自己组建:
路由模块说明:
Routes:路由配置,路由配置文件类型。比如:const routing:Routes =[{path: '',component:HomeComponent}];
RouterOutlet:HTML 占位符,路由的模版将会在这个位置展现。
RouterLink :HTML 中的路由链接,相当与angular1 的ui-serf。改变地址来转换不同的模块。
Router :执行路由对象的跳转和转跳,相当于angular1的$state.go。
ActivatedRoute : 获取激活路由传入的参数。
1.创建路由文件,导入路由模块。在app文件夹下创建 app.router.ts文件,打开文件导入路由:
import {Routes,RouterModule} from "@angular/router";
2. 导入路由的组件
import {HomeComponent} from "./home/home.component"; //主页
import {PhoneComponent} from "./phone/phone.component"; // 联系我们页面
import {MapComponent} from "./map/map.component"; //地图页面
3.配置路由:
const routing:Routes =[
{path: '',component:HomeComponent},
{path: 'phone',component:PhoneComponent},
{path: 'map',component:MapComponent},
//找不到
{path: '**',component:HomeComponent},
//重定向
{path:'',redirectTo:'/home',pathMatch:"full"}
];
4.初始化路由:
export const router = RouterModule.forRoot(routing); 或
@NgModule({
imports:[RouterModule.forRoot(routing)],
exports:[RouterModule],
providers:[]
})
export class router{
}
5.在app.module.ts文件中导入以便执行:
import { router } from './app.router';
@NgModule({
declarations: [
AppComponent,
HomeComponent,
MapComponent,
PhoneComponent
],
imports: [
BrowserModule,
FormsModule,
router //导入
],
providers: [],
bootstrap: [AppComponent]
})
6.页面路由配置
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand">
在线竞拍
</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav ">
<li role="presentation" [class.active]="isActive == 1" (click)="isActive = 1"><a [routerLink]="['/']">关于我们</a></li>
<li role="presentation" [class.active]="isActive == 2" (click)="isActive = 2"><a [routerLink]="['/phone']">联系我们</a></li>
<li role="presentation" [class.active]="isActive == 3" (click)="isActive = 3"><a [routerLink]="['/map']">网站地图</a></li>
</ul>
</div>
</div>
</nav>
<router-outlet></router-outlet> 7.事件点击跳转,如angualr1的$state.go
import {Router} from "@angular/router"
constructor(private router:Router){ }
toGoDetail(){
this.router.navigate(['/phone']);
} 8.路由传参三种方式:
const routing:Routes =[
{path: '',component:HomeComponent},
{path: 'phone/:person/:name',component:PhoneComponent},
{path: 'map',component:MapComponent}
];
<li role="presentation" [class.active]="isActive == 1" (click)="isActive = 1"><a [routerLink]="['/']">关于我们</a></li>
<li role="presentation" [class.active]="isActive == 2" (click)="isActive = 2"><a [routerLink]="['/phone',1,2]">联系我们</a></li>
<li role="presentation" [class.active]="isActive == 3" (click)="isActive = 3"><a [routerLink]="['/map']">网站地图</a></li> 或或或
const routing:Routes =[
{path: '',component:HomeComponent},
{path: 'phone/:person/:name',component:PhoneComponent},
{path: 'map',component:MapComponent}
];
<li role="presentation" [class.active]="isActive == 1" (click)="isActive = 1"><a [routerLink]="['/']">关于我们</a></li>
<li role="presentation" [class.active]="isActive == 2" (click)="isActive = 2"><a [routerLink]="['/phone/1/2']">联系我们</a></li>
<li role="presentation" [class.active]="isActive == 3" (click)="isActive = 3"><a [routerLink]="['/map']">网站地图</a></li>
或或或
{path: '',component:HomeComponent},
{path: 'phone',component:PhoneComponent,data:[{person:1,name:2}]},
{path: 'map',component:MapComponent}
9.页面参数接收
import {AcrivatedRoute} from "@angular/router" constructor(private route:ActivatedRoute){
//route.snapshot 传入的参数对象 需答应出来,不同传法,值不太一样
}
10.配置子路由
app.router.ts:
import { NgModule } from '@angular/core';
import {Routes,RouterModule} from "@angular/router";
import {HomeComponent} from "./home/home.component";
import {PhoneComponent} from "./phone/phone.component";
import {MapComponent} from "./map/map.component";
import {ProductComponent} from "./product/product.component";
import {CarouselComponent} from "./carousel/carousel.component";
const routing:Routes =[
{path:'',redirectTo:'/home',pathMatch:"full"},
{path: 'home',component:HomeComponent},
{path: 'phone',component:PhoneComponent,data:[{person:1,name:2}],
children:[
{path:'',component:CarouselComponent},
{path:'detail',component:ProductComponent}
]
},
{path: 'map',component:MapComponent},
{path: '**',component:HomeComponent}
];
@NgModule({
imports:[RouterModule.forRoot(routing)],
exports:[RouterModule],
providers:[]
})
export class router{
}
/*export const router = RouterModule.forRoot(routing);*/
<a [routerLink]="['./detail']">详情</a>
<a [routerLink]="['./']">商品</a>
<router-outlet></router-outlet>
11.辅助路由,相当于tab切换,并不改变主路由
const routing:Routes =[
{path:'',redirectTo:'/home',pathMatch:"full"},
{path: 'home',component:HomeComponent},
{path: 'phone',component:PhoneComponent,data:[{person:1,name:2}],
children:[
{path:'',component:CarouselComponent},
{path:'detail',component:ProductComponent}
]
},
{path: 'map',component:MapComponent}, //挂载在name为copy的<router-outlet name="copy"></router-outlet>的地方 {path: 'picture',component:CarouselComponent,outlet:'copy'},
{path: 'product',component:ProductComponent,outlet:'copy'},
{path: '**',component:HomeComponent}
]; HTML:
<div class="container">
<ul class="nav navbar-nav ">
<li role="presentation" ><a [routerLink]="[{outlets:{copy:'picture'}}]">轮播图</a></li>
<li role="presentation" ><a [routerLink]="[{outlets:{copy:'product'}}]">联系我们</a></li>
</ul>
</div>
<router-outlet name="copy"></router-outlet>
12.组件的第二种导入方式,通过路由致使在app.module.ts文件中不需要在申明所有的组件,被路由的组件可以在路由模块文件中申明:
angular2 路由的更多相关文章
- 从Angular2路由引发的前后端路由浅谈
笔者的学习进度比较慢,直到两年以前写的网站都还是以服务端为主导的,即网站的所有视图都由服务器视图模板来渲染,笔者使用的是 DotNet MVC,开发套路就是在Controller里面写Action,在 ...
- Angular2 路由问题修复 、求解
Angular2 提供了比angular1 更为强大的路由功能,但是在具体使用路由过程中,可是出现了很多路由不按照预想的方式执行的问题.为了说明今天的问题,我特地新建了一个测试工程.欢迎交流. 首先介 ...
- angular2路由与express路由冲突的问题
angular2的路由定义了一个/a,如果走angular的路由没问题,如果直接访问/a就会出现cannot GET /a的错误,原因就是express的路由问题. 所以路由走angular2,那ex ...
- angular2路由之routerLinkActive指令
angular2的routerLinkActive指令在路由激活时添加样式class .red{ color: red;} <a routerLink="/user/login ...
- 解决使用angular2路由后,页面刷新后报404错误。
点击路由链接跳转页面是正常的,但是当刷新页面时就出现了404错误. 解决方法如下: 在app.module.ts中添加import: import {HashLocationStrategy,Loca ...
- 关于angular2跳路由防止页面刷新的做法(Angular2路由重载)
simpleReuseStrategy.ts // 创建重用策略 import { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStr ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- angular2地址栏路由配置
一步一步route过去可以,地址栏直接写url怎么就找不到了呢? 这关乎于Nodejs的express路由规则(http://hm4123660.iteye.com/blog/2195035) exp ...
- Angular2学习笔记——路由器模型(Router)
Angular2以组件化的视角来看待web应用,使用Angular2开发的web应用,就是一棵组件树.组件大致分为两类:一类是如list.table这种通放之四海而皆准的通用组件,一类是专为业务开发的 ...
随机推荐
- Expression Blend4安装破解
先在官网上下载Expression Blend4试用版 首先进入微软下载中心,http://www.microsoft.com/zh-cn/download/default.aspx: 搜索Expre ...
- go 1.9 Beta 1
语言变化:增加了类型别名 To find out what has changed in Go 1.9, read the draft release notes: https://tip.golan ...
- Web API系列之一 Rest简介
1.REST:Representational State Transfer表征状态转移,是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格.REST设计风格有如下几点: ...
- Macaca环境搭建踩坑总结
1.使用命令 npm i macaca-android -g 安装一直不成功,使用Macaca doctor 一直没有显示出android C:\Users\ABC>npm i macaca- ...
- python爬虫爬取大众点评并导入redis
直接上代码,导入redis的中文编码没有解决,日后解决了会第一时间上代码!新手上路,多多包涵! # -*- coding: utf-8 -*- import re import requests fr ...
- springBoot系列教程04:mybatis及druid数据源的集成及查询缓存的使用
首先说下查询缓存:查询缓存就是相同的数据库查询请求在设定的时间间隔内仅查询一次数据库并保存到redis中,后续的请求只要在时间间隔内都直接从redis中获取,不再查询数据库,提高查询效率,降低服务器负 ...
- Spring_Aop的xml和注解的使用
动态代理: 目的:在不改变源代码的情况下,对方法进行增强! 动态代理又分为两种: 1.第一个就是基于接口的动态代理,他是由jdk提供的 2.基于子类的动态代理:cgli ...
- Head First设计模式之迭代器模式
一.定义 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示: 主要解决:不同的方式来遍历整个整合对象. 何时使用:遍历一个聚合对象. 如何解决:把在元素之间游走的责任交给迭代 ...
- opensuse安装pycurl失败记录
早上在opensuse安装pycurl,一直出现如下错误: pepper@VM_56_243_suse:~/code/gitosis-autotest> pip install pycurl C ...
- nvm 装 nodejs 重启终端失效的解决方法
(1) 安装 nvm wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash (2) ...