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 改变radio/checkbox选中状态,获取选中的值(示例代码)
Dec 12 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
May 08 Javascript
JavaScript操作Cookie详解
Feb 28 Javascript
JS 对象属性相关(检查属性、枚举属性等)
Apr 05 Javascript
JavaScript保留关键字汇总
Dec 01 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
Apr 22 Javascript
Vue列表页渲染优化详解
Jul 24 Javascript
利用Vue实现移动端图片轮播组件的方法实例
Aug 23 Javascript
vue-test-utils初使用详解
May 23 Javascript
node事件循环和process模块实例分析
Feb 14 Javascript
微信小程序实现电影App导航和轮播
Nov 30 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
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
我的群发邮件程序
2006/10/09 PHP
PHP中串行化用法示例
2016/11/16 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
python实现电子词典
2020/04/23 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
python爬虫实例详解
2018/06/19 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
Python初学者常见错误详解
2019/07/02 Python
Python实现性能自动化测试竟然如此简单
2019/07/30 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
学院书画协会部门岗位职责
2013/12/01 职场文书
公务员年度个人总结
2015/02/12 职场文书
父亲去世追悼词
2015/06/23 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python