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 相关文章推荐
ExtJs默认的字体大小改变的几种方法(自己整理)
Apr 18 Javascript
javascript从右边截取指定字符串的三种实现方法
Nov 29 Javascript
常规表格多表头查询示例
Feb 21 Javascript
javascript Deferred和递归次数限制实例
Oct 21 Javascript
js获取checkbox值的方法
Jan 28 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
Jun 03 Javascript
webpack多入口多出口的实现方法
Aug 17 Javascript
如何用RxJS实现Redux Form
Dec 29 Javascript
Vue使用NProgress的操作过程解析
Oct 10 Javascript
Vue引入Stylus知识点总结
Jan 16 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
Feb 25 Javascript
javascript 设计模式之组合模式原理与应用详解
Apr 08 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
杏林同学录(六)
2006/10/09 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php实现对象克隆的方法
2015/06/20 PHP
Javascript无阻塞加载具体方式
2013/06/28 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
让微信小程序支持ES6中Promise特性的方法详解
2017/06/13 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
js实现点击烟花特效
2020/10/14 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python中的列表推导浅析
2014/04/26 Python
Python中asyncore的用法实例
2014/09/29 Python
Python中random模块用法实例分析
2015/05/19 Python
Python金融数据可视化汇总
2017/11/17 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
python实现支付宝转账接口
2019/05/07 Python
python 字典套字典或列表的示例
2019/12/16 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
Python celery原理及运行流程解析
2020/06/13 Python
优秀团员个人的自我评价
2013/10/02 职场文书
小区门卫岗位职责
2013/12/31 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
防溺水主题班会教案
2015/08/12 职场文书
学习雷锋主题班会
2015/08/14 职场文书
V Rising 服务器搭建图文教程
2022/06/16 Servers