Angular 多级路由实现登录页面跳转(小白教程)


Posted in Javascript onNovember 19, 2019

本文受众是 Angular 初学者,没有多级路由使用经验,不知道登录页面与主页跳转的实现逻辑,相反,看到这里你就可以结束了,不要浪费时间。下面来看看小白对于登录页面的理解:

Angular 多级路由实现登录页面跳转(小白教程)

上图中左边是导航菜单栏,右边的空白区域是 <router-outlet> 所在区域,即所有实现业务逻辑的组件都在这里显示 - 点击左边导航栏的项目右侧B区域就替换为对应的页面,那么问题来了,登录页面要怎么做?

多级路由实现图

Angular 多级路由实现登录页面跳转(小白教程)

图有点大,看不清楚的放大点看吧。看了这个图相信一部分人已经懂了实现原理了。如果还是不懂,来看下面的文字讲解。

实现原理讲解

本文案例以 Angular + ng-zorro-antd 来讲解,如果使用了别的UI套件也没关系,原理都是一样的

  • 使用命令 ng new logindemo 创建项目
  • 在命令行界面使用 cd 切换当前路径为上面创建的项目的根目录下
  • 使用命令 ng add ng-zorro-antd 向项目中添加UI套件
  • 此时运行起来后大致就是本文的第一个图片的显示效果:左边是导航菜单,右边是变换显示业务组件的区域
  • 那么小白走到这里就被误导了,产生了本文初的疑惑,下面开始来解扣了。

项目创建好了,下面介绍改造项目的步骤:

注释掉文件 app.component.html 中的全部代码,并且添加一行:<router-outlet></router-outlet>

创建布局组件 layout ,将文件 app.component.html 中被注释的代码拷贝来,那么本组件的效果就是本文的第一个图片的布局效果了。拷贝来的代码中自带了路由插槽 <router-outlet></router-outlet> 那么到本页面中的路由插槽实际就是二级路由了。二级路由的代码如下:

const routes: Routes = [
 { 
  path:'',component:LayoutComponent,canActivate:[LayoutGuard],
  children:[
   { path: 'dbManager',loadChildren: () => 
    import('../dbmanager/dbmanager.module').then(m => m.DbmanagerModule) },

   { path: 'generateTree',loadChildren: () => 
    import('../gentree/gentree.module').then(m => m.GentreeModule) }
  ] 
 }
];

本组件的超链接中路径写法:<a routerLink="dbManager" >数据库管理器</a>,之前创建项目时的默认写法是:<a routerLink="/dbManager" >数据库管理器</a>,即只是去掉了 dbManager 前面的斜线。

那么在文件 app.component.ts 组件关联的路由文件 app-routing.module.ts 中的路由代码如下:

const routes: Routes = [
 { path: '', pathMatch: 'full', redirectTo: '/layout' },
 { path: 'login', loadChildren: () => 
  import('./pages/login/login.module').then(m => m.LoginModule) },
 { path: 'layout',loadChildren: () => 
  import('./pages/layout/layout.module').then(m => m.LayoutModule)}
];

这里的路由设置表示,当访问项目的空路径 localhost:4200 时会自动导航到组件 layout ,又由于该组件有路由守卫,如果没有登录那么会被转发到登录组件 login ,这个路由守卫是写在组件 layout 中的路由文件中的。当正常登录状态下打开组件 layout 的页面时就达到了本文的第一个图片的效果,右侧显示业务逻辑组件的页面。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让getElementsByName适应IE和firefox的方法
Sep 24 Javascript
jquery多浏览器捕捉回车事件代码
Jun 22 Javascript
深入理解javascript中return的作用
Dec 30 Javascript
浅谈jQuery的offset()方法及示例分享
Jul 17 Javascript
JQuery实现鼠标滚轮滑动到页面节点
Jul 28 Javascript
javaScript嗅探执行神器-sniffer.js
Feb 14 Javascript
jQuery Ajax前后端使用JSON进行交互示例
Mar 17 Javascript
深入理解ES7的async/await的用法
Sep 09 Javascript
JS多个表单数据提交下的serialize()应用实例分析
Aug 27 Javascript
微信小程序一周时间表功能实现
Oct 17 Javascript
Layui数据表格之单元格编辑方式
Oct 26 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
Dec 17 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 #Javascript
vue的三种图片引入方式代码实例
Nov 19 #Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
Nov 19 #Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
Nov 19 #Javascript
VUEX-action可以修改state吗
Nov 19 #Javascript
Vue.extend 编程式插入组件的实现
Nov 18 #Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
Nov 18 #Javascript
You might like
PHP下MAIL的另一解决方案
2006/10/09 PHP
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
javascript每日必学之循环
2016/02/19 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
Python实现批量修改文件名实例
2015/07/08 Python
Python批量查询域名是否被注册过
2017/06/21 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
建筑实习自我鉴定
2013/10/18 职场文书
中秋节超市促销方案
2014/01/30 职场文书
道路交通安全实施方案
2014/03/12 职场文书
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
会计试用期自我评价
2014/09/19 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
大学军训通讯稿
2015/07/18 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
python实现简单的三子棋游戏
2022/04/28 Python
Redis基本数据类型String常用操作命令
2022/06/01 Redis
python数字图像处理:图像简单滤波
2022/06/28 Python