Angular 5.x 学习笔记之Router(路由)应用


Posted in Javascript onApril 08, 2018

序言:

Angular APP 视图之间的跳转,依赖于 Router (路由),这一章,我们来讲述 Router 的应用

实例讲解

运行结果如下。 设置了3个导航栏, Home、 About、Dashboard。 点击不同的导航栏,跳转到相应的页面:

Angular 5.x 学习笔记之Router(路由)应用

创建3个 component

  1. ng g c home
  2. ng g c about
  3. ng g c dashboard

路由与配置

(1)**引入 Angular Router **

当用到 Angular Router 时,需要引入 RouterModule,如下:

// app.module.ts
import { RouterModule } from '@angular/router';
imports: [
 BrowserModule, RouterModule
],

(2) 路由配置

还记得由谁来管理component 的吧,没错,由 module 来管理。 所以,把新创建的 component,引入到 app.moudle 中。 如下:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

import { appRoutes } from './routerConfig';

import { AppComponent } from './app.component';
import { AboutComponent } from './components/about/about.component';
import { HomeComponent } from './components/home/home.component';
import { DashboardComponent } from './components/dashboard/dashboard.component';

提示: 注意component的路径,为便于管理,我们把新创建的component 移到了 components 文件夹中。

创建 Router Configure 文件

在 app 目录下, 创建 routerConfig.ts 文件。 代码如下:

import { Routes } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
import { AboutComponent } from './components/about/about.component';
import { DashboardComponent } from './components/dashboard/dashboard.component';

export const appRoutes: Routes = [
 { path: 'home', 
 component: HomeComponent 
 },
 {
 path: 'about',
 component: AboutComponent
 },
 { path: 'dashboard',
 component: DashboardComponent
 }
];

说明: Angular 2.X 以上版本,开始使用 TypeScript 编写代码,而不再是 JavaScript,所以,文件的后缀是: ts 而不是 js

这个 routerConfigue 文件,怎么调用呢? 需要把它加载到 app.module.ts 中,这是因为 app.moudle.ts 是整个Angular App 的入口。

// app.module.ts
import { appRoutes } from './routerConfig';
imports: [
 BrowserModule,
 RouterModule.forRoot(appRoutes)
],

声明 Router Outlet

在 app.component.html 文件中,添加代码:

<div style="text-align:center">
 <h1>
  {{title}}!!
 </h1>
 <nav>
  <a routerLink="home" routerLinkActive="active">Home</a>
  <a routerLink="about">About</a>
  <a routerLink="dashboard">Dashboard</a>
 </nav>
 <router-outlet></router-outlet>
 </div>

运行

进入到该工程所在的路径, 运行;

ng serve --open

当 webpack 编译成功后,在浏览器地址栏中,输入: http://localhost:4200

即可看到本篇开始的结果。

关于Router,换一种写法:

在 app.moudle.ts 文件中,代码如下 :

imports: [
  BrowserModule,
  RouterModule.forRoot(
  [
   { path: 'home', 
   component: HomeComponent 
   },
   {
   path: 'about',
   component: AboutComponent
   },
   {
   path: 'dashboard',
   component: DashboardComponent
   }
  ]
  )
 ],

这样一来,可以不用单独创建 routerConfigure.ts 文件。

小结

自从引入了面向组件(component)后,路由管理相比 AngularJS (1.X),方便了很多。

进一步优化:

或许你已经注意到,当访问 http://localhost:4200 时,它的路径应该是 “/”, 我们应该设置这个默认的路径。

{
   path: '',
   redirectTo:'/home',
   pathMatch: 'full'
   },

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 1.4 中的Ajax问题
Jan 23 Javascript
js中判断对象是否为空的三种实现方法
Dec 23 Javascript
2种jQuery 实现刮刮卡效果
Feb 01 Javascript
javascript 实现map集合
Apr 03 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
Jul 29 Javascript
基于JavaScript代码实现微信扫一扫下载APP
Dec 30 Javascript
jQuery实现点击查看大图并以弹框的形式居中
Aug 08 Javascript
AngularJS服务service用法总结
Dec 13 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
Mar 04 Javascript
微信小程序 swiper组件构建轮播图的实例
Sep 20 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
Mar 03 Javascript
谈谈JavaScript中super(props)的重要性
Feb 12 Javascript
vue2.0 资源文件assets和static的区别详解
Apr 08 #Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 #Javascript
vuex 项目结构目录及一些简单配置介绍
Apr 08 #Javascript
JS求Number类型数组中最大元素方法
Apr 08 #Javascript
angular2模块和共享模块详解
Apr 08 #Javascript
vue下拉列表功能实例代码
Apr 08 #Javascript
详解Vue-cli webpack移动端自动化构建rem问题
Apr 07 #Javascript
You might like
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
php强制下载文件函数
2016/08/24 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
JavaScript基本对象
2007/01/11 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
python在控制台输出进度条的方法
2015/06/20 Python
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
python使用opencv进行人脸识别
2017/04/07 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
学生自我鉴定范文
2013/10/04 职场文书
会计电算化专业毕业生推荐信
2013/12/24 职场文书
记者岗位职责
2014/01/06 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
收费员岗位职责
2015/02/14 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
淮海战役观后感
2015/06/11 职场文书
小学信息技术教学反思
2016/02/16 职场文书
新手初学Java网络编程
2021/07/07 Java/Android