Angular从零到一2.5 验证结果的样式自定义

2.5 验证结果的样式自定义


如果我们在开发工具中查看网页源码,可以看到经过渲染后的控件HTML代码,如图 2.11所示。

 

图 2.11 验证的样式

用户名控件的HTML代码是下面的样子:在验证结果为false时input的样式是ng-invalid:

<input

  name="username"

  class="ng-pristine ng-invalid ng-touched"

  required=""

  type="text"

  minlength="3"

  ng-reflect-minlength="3"

  ng-reflect-name="username">

类似地可以实验一下,填入一些字符满足验证要求之后,看input的HTML是下面的样子,在验证结果为true时input的样式是ng-valid:

<input

  name="username"

  class="ng-touched ng-dirty ng-valid"

  required=""

  type="text"

  ng-reflect-model="ssdsds"

  minlength="3"

  ng-reflect-minlength="3"

  ng-reflect-name="username">

知道这个后,我们可以自定义不同验证状态下的控件样式。在组件的修饰符中把styles数组改写一下:

styles: ['

  .ng-invalid{

    border: 3px solid red;

  }

  .ng-valid{

    border: 3px solid green;

  }

']

保存一下,返回浏览器可以看到,验证不通过时,如图2.12所示。

 

图2.12 验证失败的样式

验证通过时是这样的,如图 2.13所示。

 

图2.13 验证通过的样式

最后说一下,我们看到这样设置完样式后连form和fieldset都一起设置了,这是由于form和fieldset也在样式中应用了.ng-valid和.ng-valid,那怎么解决呢?只需要在.ng-valid加上input即可,这表明应用于input类型控件并且class引用了ng-invalid的元素,如下所示:

styles: ['

  input.ng-invalid{

    border: 3px solid red;

  }

  input.ng-valid{

    border: 3px solid green;

  }

']

很多开发人员不太了解CSS,其实CSS还是比较简单的,我建议先从Selector开始看,Selector的概念弄懂后Angular 2的开发中用CSS就会顺畅很多。具体可见W3School中对于CSS Selctor的参考和https://css-tricks.com/multiple-class-id-selectors/。

时间: 2024-09-20 15:49:58

Angular从零到一2.5 验证结果的样式自定义的相关文章

《Angular从零到一》导读

本节书摘来自华章出版社<Angular从零到一>一书中作者Richard Banfield 著 易艺 译   前 言 一个大叔码农的Angular 2创世纪 作为一个出生于20世纪70年代的大叔,我在软件这个领域已经摸爬滚打了16年,从程序员.项目经理.产品经理,项目总监,到部门管理等各个角色都体验过,深深地了解到这个行业发展的速度之快是其他行业无法比拟的:从编程语言.各种平台.各种框架.设计模式到各类开源工具.组件林林总总,要学习的东西实在太多,因为变化太快. 但万变不离其宗,名词变化虽多,

详解Angular开发中的登陆与身份验证_AngularJS

前言 由于 Angular 是单页应用,会在一开始,就把大部分的资源加载到浏览器中,所以就更需要注意验证的时机,并保证只有通过了验证的用户才能看到对应的界面. 本篇文章中的身份验证,指的是如何确定用户是否已经登陆,并确保在每次与服务器的通信中,都能够满足服务器的验证需求.注意,并不包括对具体是否具有某一个权限的判断. 对于登陆,主要是接受用户的用户名密码输入,提交到服务器进行验证,处理验证响应,在浏览器端构建身份验证数据. 实现身份验证的两种方式 目前,实现身份验证的方法,主要有两个大类: Co

javascript-请教Validform表单验证的显示样式问题

问题描述 请教Validform表单验证的显示样式问题 比如说,我的这个input是这样写的, 使用Validform在js中tiptype=3 . 于是为空在input下面会跳出[请输入用户名 ],通过会跳出[通过信息验证]. 但是很丑 有没有办法让[通过信息验证]不出现 ? 能不能让错误全部放在一个地方显示? 请教一下 , 谢谢. 解决方案 一种是使用ajax进行操作 一种是通过控制显示和隐藏来实现 解决方案二: 用ajax操作就可以完成,你去找段代码看一看就会了 解决方案三: 想在哪里写就

asp.net mvc3 数据验证(三)—自定义数据注解

原文:asp.net mvc3 数据验证(三)-自定义数据注解         前两节讲的都是asp.net mvc3预先设定的数据注解,但是系统自由的数据注解肯定不适合所有的场合,所以有时候我们需要自定义数据注解.         自定义数据注解有两种,一种是直接写在模型对象中,这样做的好处是验证时只需要关心一种模型对象的验证逻辑,缺点也是显而易见的,那就是不能重用.                                             还有一种是封装在自定义的数据注解中,优

Android零基础入门第39节:ListActivity和自定义列表项

原文:Android零基础入门第39节:ListActivity和自定义列表项    相信通过前两期的学习,以及会开发最简单的一些列表界面了吧,那么本期接着来学习更多方法技巧.     一.使用ListActivity       如果程序的窗口仅仅需要显示一个列表,则可以直接让Activity继承ListActivity来实现, ListActivity的子类无须调用setContentView()方法来显示某个界面,而是可以直接传入一个内容Adapter,ListActivity的子类就呈现

Angular应用中的登录与身份验证示例

Angular 经常会被用到后台和管理工具的开发,这两类都会需要对用户进行鉴权.而鉴权的第一步,就是进行身份验证.由于 Angular 是单页应用,会在一开始,就把大部分的资源加载到浏览器中,所以就更需要注意验证的时机,并保证只有通过了验证的用户才能看到对应的界面. 功能边界 本篇文章中的身份验证,指的是如何确定用户是否已经登录,并确保在每次与服务器的通信中,都能够满足服务器的验证需求.注意,并不包括对具体是否具有某一个权限的判断. 对于登录,主要是接受用户的用户名密码输入,提交到服务器进行验证

Angular从零到一2.1 对于login组件的小改造

第2章 用Form表单做一个登录控件 从这一章起我们会打造一个待办事项列表的应用(Todo),这个Todo应用让人们可以输入新的待办事项,事项完成后,可以标记其为完成,也可以全部反转目前列表中事项的完成状态,以及清除所有已完成的事项.列表中还会有一个筛选器,用户可以通过筛选器筛选出所有活动的事项以及已完成的事项.这个应用在各个前端框架的比较中经常用到,因为它麻雀虽小五脏俱全. 当然我们会再给这个应用加点料,首先这个应用应该有Web API后台,而不仅仅是一个内存版本.再有,我们要打造一个支持多用

Angular从零到一1.4 第一个组件

1.4 第一个组件 现在,为我们的App增加一个Component吧,在命令行窗口输入 ng generate component login --inline-template --inline-style . 顾名思义,参数generate是用来生成文件的,参数component是说明我们要生成一个组件,login是我们的组件名称,你可以自己想个其他有意思的名字.后面的两个参数是告诉angular-cli:生成组件时,请把组件的HTML模板和CSS样式和组件放在同一个文件中(其实分开文件更清

Angular从零到一1.3 第一个小应用 Hello Angular

1.3 第一个小应用 Hello Angular 那么现在开启一个terminal(命令行窗口),键入 ng new hello-angular ,你会看到以下的命令行输出. wangpengdeMacBook-Pro:~ wangpeng$ ng new hello-angular installing ng2   create .editorconfig   create README.md   create src/app/app.component.css   create src/ap