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中校验时间格式的正则表达式小结
Sep 22 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
Nov 15 Javascript
jQuery蓝色风格滑动导航栏代码分享
Aug 19 Javascript
浅谈几种常用的JS类定义方法
Jun 08 Javascript
用js实现博客打赏功能
Oct 24 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 Javascript
BootStrap selectpicker后台动态绑定数据的方法
Jul 28 Javascript
Javascript实现跨域后台设置拦截的方法详解
Aug 04 Javascript
页面点击小红心js实现代码
May 26 Javascript
js实现计时器秒表功能
Dec 16 Javascript
原生JS实现留言板
Mar 26 Javascript
Vue通过provide inject实现组件通信
Sep 03 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&amp;&amp;mysql)五
2006/10/09 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
JSQL SQLProxy 的 php 版本代码
2010/05/05 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
深入理解node.js http模块
2018/01/24 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
浅谈Python数据类型之间的转换
2016/06/08 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
运动会跳远加油稿
2014/02/20 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
学校通报表扬范文
2015/05/04 职场文书
Redis性能监控的实现
2021/07/09 Redis
java实现web实时消息推送的七种方案
2022/07/23 Java/Android