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/。

相关文章
|
6月前
Angular HTTP 请求自定义 timeout 值的一种实现思路
Angular HTTP 请求自定义 timeout 值的一种实现思路
29 1
|
12月前
|
JavaScript 前端开发 API
让Angular自定义组件支持form表单验证
让Angular自定义组件支持form表单验证
112 0
|
Perl
Angular最新教程-第十三节 管道Pipes 自定义管道
Angular最新教程-第十三节 管道Pipes 自定义管道
108 0
Angular最新教程-第十三节 管道Pipes 自定义管道
|
JSON Linux 数据格式
Angular 2.x折腾记 :(5) 动手实现一个自定义管道
管道这东西,可以让用户的体验变得好,也可以省去我们一些重复性的工作; 官方的内置管道就不解释了,自行看文档吧
127 0
|
JSON API 数据格式
【Angular教程】自定义管道
【Angular教程】自定义管道
172 0
【Angular教程】自定义管道
|
前端开发 JavaScript
Angular 中 SASS 样式的使用
在 Angular 自定义指令 Tooltip 文章中,我们说会出一篇关于 sass 样式的文章,现在它来了。
Angular 中 SASS 样式的使用
|
JavaScript 数据安全/隐私保护 Android开发
Angular 中自定义 Video 操作
上一篇文章是 Angular 项目实现权限控制。最近自己在网上看到别人使用 vue 进行自定义 video 的操纵。加上不久前实现了 angular 自定义 video 的相关需求, 遂来记录一下,作为交流思考🤔
Angular 中自定义 Video 操作
|
JavaScript 前端开发 API
Angular 自定义服务 notification
比如,我们这篇文章要讲到的 notification 的实现。
Angular 自定义服务 notification
Angular 自定义结构化指令,如何传入多个输入参数
Angular 自定义结构化指令,如何传入多个输入参数
176 0
Angular 自定义结构化指令,如何传入多个输入参数
Angular 如何自定义 pipe 管道以及参数传递问题
Angular 如何自定义 pipe 管道以及参数传递问题
304 0
Angular 如何自定义 pipe 管道以及参数传递问题