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 相关文章推荐
js jquery做的图片连续滚动代码
Jan 06 Javascript
JS模态窗口返回值兼容问题的完美解决方法
May 28 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
Aug 01 Javascript
js实现获取鼠标当前的位置
Dec 14 Javascript
微信小程序 radio单选框组件详解及实例代码
Jan 10 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
Mar 05 Javascript
通过实例了解JS 连续赋值
Sep 24 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
Nov 01 Javascript
vue-router结合vuex实现用户权限控制功能
Nov 14 Javascript
JS实现页面数据懒加载
Feb 13 Javascript
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
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
星际RPG字典
2020/03/04 星际争霸
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
javascript String 对象
2008/04/25 Javascript
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
React数据传递之组件内部通信的方法
2017/12/31 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
python实现汉诺塔算法
2021/03/01 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
python 如何实现遗传算法
2020/09/22 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
个人自我评价分享
2013/12/20 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
销售口号大全
2014/06/11 职场文书
校园活动策划方案
2014/06/13 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫
SQL语句多表联合查询的方法示例
2022/04/18 MySQL