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 相关文章推荐
自己开发Dojo的建议框架
Sep 24 Javascript
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
JavaScript之HTMLCollection接口代码
Apr 27 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
Jan 03 Javascript
js 弹出框只弹一次(二次修改之后的)
Nov 26 Javascript
JS判断是否手机或pad访问实现方法
Dec 09 Javascript
jQuery EasyUI ProgressBar进度条组件
Feb 28 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
Jul 07 Javascript
vue中的provide/inject的学习使用
May 09 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
May 27 jQuery
使用vue中的混入mixin优化表单验证插件问题
Jul 02 Javascript
小程序Scroll-view上拉滚动刷新数据
Jun 21 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
如何设置mysql允许外网访问
2013/06/04 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
js比较和逻辑运算符的介绍
2013/03/10 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
全面理解Python中self的用法
2016/06/04 Python
django fernet fields字段加密实践详解
2019/08/12 Python
python数据预处理方式 :数据降维
2020/02/24 Python
python mysql中in参数化说明
2020/06/05 Python
Python 内存管理机制全面分析
2021/01/16 Python
公积金转移接收函
2014/01/11 职场文书
军训自我鉴定
2014/01/22 职场文书
新书发布会策划方案
2014/06/09 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
求职自我推荐信
2015/03/24 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python