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 相关文章推荐
jquery ajax提交表单数据的两种实现方法
Apr 29 Javascript
基于jquery的图片幻灯展示源码
Jul 15 Javascript
jquery+css+ul模拟列表菜单具体实现思路
Apr 15 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
Feb 27 Javascript
解决拦截器对ajax请求的拦截实例详解
Dec 21 Javascript
JavaScript获取ul中li个数的方法
Feb 13 Javascript
在Vue.js中使用Mixins的方法
Sep 12 Javascript
详解如何在项目中使用jest测试react native组件
Feb 09 Javascript
vue单页缓存方案分析及实现
Sep 25 Javascript
vuex如何重置所有state(可定制)
Jan 17 Javascript
微信小程序 轮播图实现原理及优化详解
Sep 29 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下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
2016/12/02 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
python实现发送邮件及附件功能
2021/03/02 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
Python实现粒子群算法的示例
2021/02/14 Python
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
幸福家庭事迹材料
2014/02/03 职场文书
运动会方阵口号
2014/06/07 职场文书
校车安全责任书
2014/08/25 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
工作失误检讨书范文
2015/01/26 职场文书
2015年司法所工作总结
2015/04/27 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
SQL注入的实现以及防范示例详解
2021/06/02 MySQL