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 相关文章推荐
JavaScript 精粹读书笔记(1,2)
Feb 07 Javascript
关于JavaScript中原型继承中的一点思考
Jul 25 Javascript
jquery改变tr背景色的示例代码
Dec 28 Javascript
探讨js字符串数组拼接的性能问题
Oct 11 Javascript
深入理解jQuery 事件处理
Jun 14 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
Oct 26 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
Feb 15 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
Sep 19 Javascript
详解javascript对数组和json数组的操作
Apr 15 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
Openlayers实现地图全屏显示
Sep 28 Javascript
CocosCreator如何实现划过的位置显示纹理
Apr 14 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
第八节 访问方式 [8]
2006/10/09 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
Python实现包含min函数的栈
2016/04/29 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
上班看电影检讨书
2014/02/12 职场文书
先进集体获奖感言
2014/02/13 职场文书
投标担保书范文
2014/04/02 职场文书
投标诚信承诺书
2014/05/26 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
交通处罚决定书
2015/06/24 职场文书
JS实现九宫格拼图游戏
2022/06/28 Javascript
element tree树形组件回显数据问题解决
2022/08/14 Javascript