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 相关文章推荐
js客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
js制作的鼠标悬浮时产生的下拉框效果
Oct 27 Javascript
javascript垃圾收集机制与内存泄漏详细解析
Nov 11 Javascript
js showModalDialog弹出窗口实例详解
Jan 07 Javascript
jQuery聚合函数实例
May 21 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
Jul 05 Javascript
在JavaScript中访问字符串的子串
Jul 07 Javascript
简单封装js的dom查询实例代码
Jul 08 Javascript
javascript弹出带文字信息的提示框效果
Jul 19 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
Oct 19 Javascript
iframe与主框架跨域相互访问实现方法
Sep 14 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 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加密解密的代码
2006/10/09 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
jQuery自定义图片上传插件实例代码
2017/04/04 jQuery
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
python中正则的使用指南
2016/12/04 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
安全标准化汇报材料
2014/02/03 职场文书
创业计划书如何编写
2014/02/06 职场文书
公司办公室岗位职责
2014/03/19 职场文书
军训后的感想
2015/08/07 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
Echarts如何重新渲染实例详解
2022/05/30 Javascript
如何基于python实现单目三维重建详解
2022/06/25 Python