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 相关文章推荐
拖动一个HTML元素
Dec 22 Javascript
比较简单的异步加载JS文件的代码
Jul 18 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
May 25 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
Mar 29 Javascript
javascript学习笔记(十) js对象 继承
Jun 19 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
Aug 02 Javascript
JavaScript类继承及实例化的方法
Jul 25 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
Nov 02 Javascript
JavaScript数组及常见操作方法小结
Nov 13 Javascript
javascript实现超好看的3D烟花特效
Jan 01 Javascript
JavaScript数组排序小程序实现解析
Jan 13 Javascript
带你彻底理解JavaScript中的原型对象
Apr 14 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中的Reload操作
2016/12/12 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
javascript实现标签切换代码示例
2016/05/22 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
Python中的__slots__示例详解
2017/07/06 Python
python实现比较文件内容异同
2018/06/22 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
django数据库自动重连的方法实例
2019/07/21 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
使用python求解二次规划的问题
2020/02/29 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
毕业生自我鉴定
2013/11/05 职场文书
测绘工程专业个人自我评价
2013/12/01 职场文书
开会迟到检讨书
2014/01/08 职场文书
岗位廉政承诺书
2014/03/27 职场文书
法人代表资格证明书
2015/06/18 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
给校长的建议书作文300字
2015/09/14 职场文书