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 词法作用域和闭包分析说明
Aug 12 Javascript
JavaScript中OnLoad几种使用方法
Dec 15 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
Apr 11 Javascript
Javascript倒计时页面跳转实例小结
Sep 11 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
使用JavaScript制作一个简单的计数器的方法
Jul 07 Javascript
jQuery动态添加与删除tr行实例代码
Oct 18 Javascript
js无提示关闭浏览器窗口的两种方法分析
Nov 06 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
Nov 23 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
Sep 14 Javascript
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
Feb 24 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仿ZOL分页类代码
2008/10/02 PHP
PHP技术开发技巧分享
2010/03/23 PHP
php对称加密算法示例
2014/05/07 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
Python中的模块和包概念介绍
2015/04/13 Python
Python3实现从文件中读取指定行的方法
2015/05/22 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
浅谈python之新式类
2018/08/12 Python
Django model反向关联名称的方法
2018/12/15 Python
python动态文本进度条的实例代码
2020/01/22 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
师范毕业生自荐信
2013/10/17 职场文书
化学专业毕业生自荐信
2013/11/15 职场文书
搞笑获奖感言
2014/01/30 职场文书
给校长的建议书400字
2014/05/15 职场文书
领导班子四风表现材料
2014/08/23 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python