[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!"

相关推荐
一只小风华~3 分钟前
Vue Router 命名路由学习笔记
前端·javascript·vue.js·笔记·学习·ecmascript
我是华为OD~HR~栗栗呀7 分钟前
前端面经-高级开发(华为od)
java·前端·后端·python·华为od·华为·面试
超级大只老咪37 分钟前
HTML学习路线
前端·学习·html
゜ eVer ㄨ39 分钟前
React学习第三天——生命周期
前端·学习·react.js
摆烂且佛系42 分钟前
CSS元素的总宽度计算规则
前端·css
对岸住着星星1 小时前
vue3+ts实现拖拽缩放,全屏
前端·javascript
aesthetician1 小时前
@tanstack/react-query:React 服务器状态管理与数据同步解决方案
服务器·前端·react.js
不会kao代码的小王1 小时前
WaveTerminal+cpolar:命令行工具的远程协作新体验
笔记
老虎06271 小时前
黑马点评学习笔记01(手机号校验(正则表达式))
笔记·学习
Nan_Shu_6141 小时前
学习:uniapp全栈微信小程序vue3后台(28)
前端·学习·微信小程序·小程序·uni-app