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 相关文章推荐
图像替换新技术 状态域方法
Jan 28 Javascript
关于JavaScript中name的意义冲突示例介绍
May 29 Javascript
js中各种类型的变量在if条件中是true还是false
Jul 16 Javascript
JS中实现简单Formatter函数示例代码
Aug 19 Javascript
js弹出对话框方式小结
Nov 17 Javascript
基于JavaScript实现瀑布流布局(二)
Jan 26 Javascript
js 判断登录界面的账号密码是否为空
Feb 08 Javascript
利用jQuery实现简单的拖曳效果实例代码
Oct 20 jQuery
jquery 给动态生成的标签绑定事件的几种方法总结
Feb 24 jQuery
CryptoJS中AES实现前后端通用加解密技术
Dec 18 Javascript
p5.js临摹动态图形实现方法详解
Oct 23 Javascript
javascript使用正则表达式实现注册登入校验
Sep 23 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入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
Python的Flask开发框架简单上手笔记
2015/11/16 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
总经理岗位职责
2013/11/09 职场文书
夜大毕业生自我评价分享
2013/11/10 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS