[Angular] 笔记 15:模板驱动表单 - 表单验证

油管视频: Form Validation

有三种类型的验证: valid, pristine(是否被编辑过,被改过),以及 touched

相反的属性: invalid, dirty, untouched

pokemon-template-form.component.html 代码修改:

任何时候看见 "ngModel",就知道是用于表单验证。

html 复制代码
<form #form="ngForm">
  Pokemon Name:
  <input type="text" [(ngModel)]="pokemon.name" name="name" />
  <label>
    <input
      type="radio"
      name="isCool"
      [value]="true"
      #pokemonName="ngModel"      增加模板引用变量 pokemonName
      [ngModel]="pokemon.isCool"
    />Pokemon is cool?
  </label>
  <label>
    <input
      type="radio"
      name="isCool"
      [value]="false"
      [ngModel]="pokemon.isCool"
      (ngModelChange)="toggleIsCool($event)"
    />Pokemon is NOT cool?
  </label>
  <label>
    <input
      type="checkbox"
      name="acceptTerms"
      [(ngModel)]="pokemon.acceptTerms"
    />
    Accept Terms?</label
  >
</form>
<div>
  MODEL: {{ pokemon | json }} 
  FORM: {{ form.value | json }}
  / 新增code
  ERROR: <div *ngIf="!pokemonName.pristine">NOT PRINSTINE ANYMORE IT IS DIRTY!</div>
</div>

web 界面,如果选了其他 radio button,就会出现"NOT PRINSTINE ANYMORE IT IS DIRTY!"

相关推荐
汇能感知几秒前
光谱相机叶绿素荧光成像技术的原理
经验分享·笔记·科技
饭碗、碗碗香4 分钟前
【开发常用命令】:docker常用命令
linux·运维·笔记·学习·docker·容器
一直游到海水变蓝丿4 分钟前
el-select下拉框 添加 el-checkbox 多选框
前端·javascript·vue.js
阿奇__1 小时前
element 跨页选中,回显el-table选中数据
前端·vue.js·elementui
谢尔登1 小时前
【React】SWR 和 React Query(TanStack Query)
前端·react.js·前端框架
断竿散人1 小时前
专题一、HTML5基础教程-Viewport属性深入理解:移动端网页的魔法钥匙
前端
3Katrina1 小时前
理解Promise:让异步编程更优雅
前端·javascript
星之金币1 小时前
关于我用Cursor优化了一篇文章:30 分钟学会定制属于你的编程语言
前端·javascript
天外来物1 小时前
实战分享:用CI/CD实现持续部署
前端·nginx·docker
moxiaoran57531 小时前
Spring Cloud Gateway 动态路由实现方案
运维·服务器·前端