利用angular4和nodejs-express构建一个简单的网站(九)—用户登录

news/2024/4/28 5:27:03/文章来源:https://blog.csdn.net/weixin_33757609/article/details/88881323

最近工作比较忙,一直没有更新文章。原来看别人的文章感觉很过瘾,现在自己写才发现,要坚持下去真的很难。好了,废话少说,继续吧!
这一章主要讲利用angularJs控制用户登录。在前面的用户注册表单中使用了angular的响应式表单。为了对angular的知识学习的全面一点,在用户登录的表单中,使用了模板驱动型表单。

先从html代码开始

<div class="div-login"><form (ngSubmit)="onSubmit()" #loginForm="ngForm"><div class="form-group"><label for="name">User name</label><input type="text" class="form-control" id="name" name="name" placeholder="Enter user name" [(ngModel)]="user.name" required#name="ngModel"><div *ngIf="name.invalid && (name.dirty || name.touched)"   class="alert alert-danger">User name is required!</div></div><div class="form-group"><label for="password">Password</label><div class="input-group"><input class="form-control" id="password" name="passwrod" placeholder="Enter password" [(ngModel)]="user.password"required #password="ngModel"></div><div *ngIf="password.invalid && (password.dirty || password.touched)" class="alert alert-danger">Password is required!</div></div><div class="form-group form-btn"><button type="submit" class="btn btn-primary" [disabled]="!loginForm.form.valid">Submit</button><button type="button" class="btn btn-light" (click)="loginForm.reset()">Cancel</button></div></form>
</div>

在这个html文件的<form>标签中,(ngSubmit)="onSubmit()"和用户注册表单一样,用于处理表单的提交操作,为了实现在表单不合法时提交按钮的disabled为false,需要让按钮能够访问到表单,从而获取到表单的状态,所以,需要在<form>标签中定义了一个模板引用变量 #loginForm,并且把赋值为“ngForm”,同时在submit按钮标签中加入:[disabled]="!loginForm.form.valid"
两个<input>标签分别输入用户名和密码,通过ngModel创建双向绑定到组件类的User对象的name和password属性,用于读取和写入输入控件的值。这里需要注意一点:当在表单中使用 [(ngModel)] 时,必须要定义 name 属性
模板驱动表单的验证都在html代码中实现,需要完成以下几项任务:

  • 首先要定义模板引用变量,并赋值为"ngModel",注意观察<input>标签中的 #name="ngModel"和#password="ngModel"。
  • 两个用户名和密码的验证规则比较简单,只需required,在两个<input>标签中加入此属性。
  • 显示验证错误信息和注册表单差不多,当模板引用变量即两个输入框变为dirty(控件值变化了)和touched(控件值被访问过)状态时,如果控件值无效(invalid),就显示<div>标签包裹的内容。

html部分的内容就这些了,下面我们看一下控件类的内容。

控件类

先把代码放出来,后面慢慢分析。

@Component({selector: 'app-login',templateUrl: './login.component.html',styleUrls: ['./login.component.css']
})
export class LoginComponent {user: User = new User(0, '', '', '');constructor(private route: Router,private jumService: JumbotronServive,private userServ: UserService,private tokenServ: AuthTokenService) {jumService.setJumbotron(new Jumbotron('Login',`Please login with your user name and password first`,``));}onSubmit() {this.userServ.getUser(this.user).subscribe((resp) => {this.tokenServ.setToken(resp.body['token']);this.route.navigate(['/birthday']);alert('登录成功!');},(err)=>alert(this.userServ.handleError(err)),() => console.log('The Post observable is now completed. '))}
}

控件类主要完成了如下功能:

  • 首先初始化了一个User类的对象,用于ngModel双向绑定到控件。保证在html控件值变化时,绑定的User类的属性同步变化。
  • 在构造函数中声明了一个Router对象、一个JumbotronServive对象和UserService对象、AuthTokenService对象。并在构造函数中用JumbotronServive的setJumbotron方法更新了网页的标题。(JumbotronServive的setJumbotron方法具体内容请看前面的文章。)
  • onSubmit()函数在表单提交时被触发,在该函数中UserService的getUser()函数,getUser()函数向服务器发送了用户名和密码,如果服务器验证成功,会发送回jwt认证信息的token字符串,其中包括了userid。在onSubmit()函数中调用AuthTokenService的setToken()函数,将这个字符串存储到本地存储,用于导航到下一个页面(生日页面)时验证用户信息。接下来导航到下一个页面,并提示用户登录成功。如果发生错误,提示错误原因。

用户登录主要的内容就这些了。其中还有一个小技巧性的东西就是在输入密码的时候,因为<input>标签的type=password,显示的输入内容为“.”,很容易输错。我在这个控件上放了一个可以切换的图片,用于让用户选择是否查看明文。实现的方法主要是改变<input>控件的attr属性。如果需要具体实现方法的朋友,可以给我留言,我会在回复中告诉大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_702088.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站技术架构(七)网站的可扩展性架构

2019独角兽企业重金招聘Python工程师标准>>> 扩展性是指对现有系统影响最小的情况下&#xff0c;系统功能可持续扩展或提升的能力。 设计网站可扩展架构的核心思想是模块化&#xff0c;并在此基础上&#xff0c;降低模块间的耦合性&#xff0c;提供模块的复用性。模…

汉字字符编码在线查询的网站

推荐一个汉字字符编码在线查询的网站&#xff0c;常用的编码方式通吃&#xff1a; https://www.qqxiuzi.cn/bianma/zifuji.php 效果&#xff1a;

如何知道一个网站的后台地址_你的网站在给别人盈利你知道吗?快来修改后台地址和账号密码...

众所周知&#xff0c;网站的安装程序是固定的&#xff0c;安装织梦模板的流程大家都会&#xff0c;这时大家会发现一个问题&#xff0c;我是这样安装的&#xff0c;别人也是这样安装的&#xff0c;那么是不是所有人的网站后台都是&#xff1a;http://你的域名/dede/&#xff0c…

全文搜索引擎有哪些?_搜索引擎工作原理是什么?seo蜘蛛抓取会受到哪些因素影响?...

seo优化就是搜索引擎优化&#xff0c;就是对网站进行各方面调整&#xff0c;使其更符合搜索引擎的算法要求&#xff0c;从而得到更多的流量及转化&#xff0c;所以做seo必须要多搜索引擎有更多的认识和了解。搜索引擎有哪些功能模块&#xff1f;它的工作原理是什么&#xff1f;…

作者免费分享自己论文也不行,知名学术社交网站被判侵权,此前已下架20万余篇论文...

萧箫 发自 凹非寺量子位 | 公众号 QbitAI这场关于“开放获取”的官司&#xff0c;最终还是出版商们打赢了。知名学术社交网站ResearchGate被判下架50篇受版权保护的论文&#xff0c;并被要求对侵权内容负责。起因是爱思唯尔和ACS&#xff08;美国化学学会&#xff09;发现&…

网站 java php_做网站用java还是php

做网站用java还是php&#xff1f;做网站用PHP会更合适&#xff0c; 因为php主要就是用于web网站开发方面&#xff0c;开发比较快速。1&#xff0c;PHP适合于快速开发&#xff0c;中小型应用系统&#xff0c;开发成本低&#xff0c;能够对变动的需求作出快速的反应。而Java适合于…

最大日漫网站崩了/ 马斯克星链要搞手机业务/ PS5涨价…今日更多新鲜事在此

日报君 发自 凹非寺量子位 | 公众号 QbitAI大家好&#xff0c;今天是8月26日&#xff0c;周五了&#xff5e;今天科技圈都有什么大事&#xff1f;来跟日报君一起看看吧。今日大新闻索尼宣布PS5涨价&#xff0c;国行版上调400元索尼的PS5涨价了&#xff0c;中国大陆国行PS5数字版…

虚拟机复制后需要改什么_网站改版后为什么需要每月运营维护?

我们都知道购买新车的陈词滥调&#xff0c;一旦您开了一些时间后&#xff0c;它的价值就会下降。尽管这可能是正确的&#xff0c;但您至少会放心&#xff0c;因为知道在最初几年出现任何问题时&#xff0c;保修将为您提供保护。如果您的发动机卡住了或您的变速器出现故障&#…

python实现简单爬虫功能(网站图片)

转自http://www.cnblogs.com/fnng/p/3576154.html 在我们日常上网浏览网页的时候&#xff0c;经常会看到一些好看的图片&#xff0c;我们就希望把这些图片保存下载&#xff0c;或者用户用来做桌面壁纸&#xff0c;或者用来做设计的素材。 我们最常规的做法就是通过鼠标右键&…

几个不错的java类、jar包及其依赖查找网站。。。

为什么80%的码农都做不了架构师&#xff1f;>>> 开发过程中有时需要查找类对应的jar包及其依赖&#xff0c;并且要能够下载。。。 之前都是用的以下两个&#xff08;第一个还是不错&#xff0c;第二个比较垃圾&#xff0c;很多都查不到- -!&#xff09; http://www…

四、管理网站(一) Using the command line interface

Orchard为许多在管理面板中可用的和不可用的功能的命令行接口。命令行工具名称是 “orchard.exe”&#xff0c;在网站根目录下bin目录中。 Using Commands 要查看可用的命令&#xff0c;输入help commands。 orchard> help commands List of available commands: ----------…

记一次网站服务器搬迁实录

这是一篇记录在日志里面的文章&#xff0c;今儿趁有时间整理整理。这篇文章记录了整个服务器切换的具体步骤和实施细则&#xff0c;一些小网站的搬迁和服务器的迁移可以做个参考。同时也记录下&#xff0c;方便自己的查阅。这是一个phpmysql写的网站&#xff0c;前期用的window…

经典网页设计:20个与众不同的 Flash 网站设计作品

如果你正在为你的 Flash 网站设计项目寻找灵感和新思路&#xff0c;那么这篇文章推荐的20个非常有创意的 Flash 网站设计作品相信能帮助到你。Flash 网站页面美观&#xff0c;互动性强&#xff0c;可以声形并茂&#xff0c;实现普通的 HTML 网站不能制造出的质感和动作&#xf…

curl网站开发指南

转载 http://www.ruanyifeng.com/blog/2011/09/curl.html 我一向以为&#xff0c;curl只是一个编程用的函数库。最近才发现&#xff0c;这个命令本身&#xff0c;就是一个无比有用的网站开发工具&#xff0c;请看我整理的它的用法。curl网站开发指南阮一峰 整理curl是一种命令行…

我是如何将网站全站启用Https的?-记录博客安装配置SSL证书全过程

评论 文章目录 为什么要Https如何选择Https安装部署SSL证书平滑过渡Https搜索引擎的响应启用Https小结正如大家所看到的&#xff0c;部落全站已经启用了Https访问了&#xff0c;连续几天的网站安装和调试SSL终于可以告一段落了。曾经看到身边不少的朋友纷纷启用Https&#xff…

网站无法显示logo?

那是因为你没有配置favicon.ico&#xff0c;每个网站根目录都会有一个favicon.ico&#xff0c;因为每个服务器都会请求根目录下的它。 转载于:https://www.cnblogs.com/cisum/p/8743722.html

html优化网站的方法,利用HTML优化加快网页速度方法介绍

减少web页面下载时间的关键就是设法减小文件大小。当多个页面共用一些成分内容时&#xff0c;就可以考虑将这些公用部分单独分离出来。比如&#xff1a;我们可以将多个HTML页面都用到的脚本程序编写成独立存在的。js文件&#xff0c;然后再在页面中按如下方式调用它&#xff1a…

优化网站设计(七):避免在CSS中使用表达式

前言 网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议。这方面的研究一直没有停止过&#xff0c;我在不同的场合也分享过这样的话题。 作为通用的原则&#xff0c;雅虎的工程师团队曾经给出过35个最佳实践。这个列表请参考 Best Practices fo…

让你的网站拥有微博(weibo.com)关注图标

最近在做开发的过程中&#xff0c;有一个需求是在网站里面添加新浪微博(http://weibo.com)的关注图标。 先来看看我的运行效果,一下是四种不同的格式&#xff0c;实现都很简单&#xff1a; 操作步骤如下&#xff1a; 第一步&#xff1a;你需要申请一个微博(weibo.com)的账号 如…

php网站开发案例教程ppt,php网站开发案例教程》课件.ppt

php网站开发案例教程》课件.ppt还剩178页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;很抱歉&#xff0c;此页已超出免费预览范围啦&#xff01;如果喜欢就下载吧&#xff0c;价低环保&#xff01;内容要点&#xff1a;PHP网…