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这种通放之四海而皆准的通用组件,一类是专为业务开发的 ...
随机推荐
- [置顶]
xamarin android Fragment实现底部导航栏
前段时间写了篇关于Fragment的文章,介绍了基础的概念,用静态和动态的方式加载Fragment Xamarin Android Fragment的两种加载方式.下面的这个例子介绍xamarin ...
- 修改Linux内核参数提高Nginx服务器并发性能
当linux下Nginx达到并发数很高,TCP TIME_WAIT套接字数量经常达到两.三万,这样服务器很容易被拖死.事实上,我们可以简单的通过修改Linux内核参数,可以减少Nginx服务器 的TI ...
- Java设计模式总汇一
PS:首先我们要带着问题读文章 什么是设计模式 为什么要用设计模式 使用设计模式有什么好处 设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了重用代码.让 ...
- C/C++调用Golang 一
C/C++调用Golang 一 (开发环境: 操作系统: windows 7 32位操作系统 C++: visual studio 2010 Golang:go version go1.9 windo ...
- Linux的编码及编码转换
如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Li ...
- 响应式布局—设备像素密度测试 (-webkit-min-device-pixel-ratio)
最近遇到这种头疼的问题,百思不得其解,不耻下问,悬梁刺股这些事情都做过之后,终于看到希望,于是攒见好就收,感觉整理分享给大家,希望有所帮助. 对手机分辨率和网页像素的初步认识是,是2倍的差别. 但 ...
- k8s 核心功能 - 每天5分钟玩转 Docker 容器技术(116)
本节带领大家快速体验 k8s 的核心功能:应用部署.访问.Scale Up/Down 以及滚动更新. 部署应用 执行命令: kubectl run kubernetes-bootcamp \ --im ...
- Nginx: http 跳转 https
参考:博文 参考:HTTP 状态码解读 Nginx - rewrite 方式 Nginx Server 配置 server { listen ; server_name www.test.com te ...
- Java工程读取resources中资源文件路径问题
正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径,即相对于当前类的路径.在本地工程和服务器中读取文件的方式有所不同,以下图配置文件为例. 本地读取资 ...
- Linux下查询进程PS或者杀死进程kill的小技巧
假设我们要kill掉tomcat: 那么我们首先需要tomcat的进程号pid: ps -aux | grep tomcat 记下tomcat的PID后,执行:kill PID(tomcat) 好了, ...