angular1.0 表单校验的一个坑(嵌套表单校验)

 今天看阿里云分享的一个表单校验的视频,本来想着做了很多校验了,也没有遇到什么坑,看来还是自己做的太少~

这样的,我手敲记录下吧:

<form name="userForm" novalidate>  一定要有name novalidate是用来禁止浏览器的校验的
  <div class="form-group" ng-repeat="user in users">
  <input type="error" name="email" class="form-control" ng-model="user.email" required>
  <p ng-show="userForm.email.$invalid"> error
 </div>
这就是一个简单的校验,但是如果一个输入框错误了,其他的都会报错,因为userForm.email不是唯一的,解决方式:

再加一层,<ng-form name="userFieldForm"> 用这个name加上input的name做校验就可以了


还有一种方式,是手动去注册父的form-controller

点击打开链接 破狼 细说angular form addControl 这篇文章有详细描述,又发现了个好博客,哈哈,而且理解源码真是做大牛的必要步骤啊


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Angular 表单提交校验控制案例: HTML 代码: ``` <form (ngSubmit)="onSubmit()" #myForm="ngForm"> <div class="form-group"> <label for="name">Name:</label> <input type="text" class="form-control" id="name" name="name" [(ngModel)]="name" required minlength="3"> <div *ngIf="myForm.submitted && myForm.controls.name.errors" class="text-danger"> <div *ngIf="myForm.controls.name.errors.required"> Name is required. </div> <div *ngIf="myForm.controls.name.errors.minlength"> Name must be at least 3 characters long. </div> </div> </div> <div class="form-group"> <label for="email">Email:</label> <input type="email" class="form-control" id="email" name="email" [(ngModel)]="email" required email> <div *ngIf="myForm.submitted && myForm.controls.email.errors" class="text-danger"> <div *ngIf="myForm.controls.email.errors.required"> Email is required. </div> <div *ngIf="myForm.controls.email.errors.email"> Invalid email format. </div> </div> </div> <button type="submit" class="btn btn-primary" [disabled]="!myForm.valid">Submit</button> </form> ``` 在上面的代码中,我们定义了一个表单,其中包含两个输入框:一个用于输入名称,另一个用于输入电子邮件地址。我们使用了 `ngModel` 指令来绑定输入框的值到组件中的属性,使用 `required` 和 `minlength` 校验器来验证名称输入框是否符合要求,使用 `required` 和 `email` 校验器来验证电子邮件输入框是否符合要求。 在每个输入框下面,我们使用了一个 `*ngIf` 结构来显示校验错误信息。如果表单已经提交且存在相应的错误,则显示相应的错误信息。 最后,我们在提交按钮上使用了一个 `[disabled]` 属性来禁用按钮,以防止用户在表单无效时提交表单。 TypeScript 代码: ``` import { Component } from '@angular/core'; import { NgForm } from '@angular/forms'; @Component({ selector: 'app-form', templateUrl: './form.component.html', styleUrls: ['./form.component.css'] }) export class FormComponent { name: string; email: string; onSubmit() { console.log('Form submitted'); } } ``` 在组件中,我们定义了 `name` 和 `email` 两个属性来存储输入框的值。在 `onSubmit` 方法中,我们只是简单地打印一条消息,表示表单已经提交。 注意,我们使用了 `NgForm` 类型来注入表单对象,以便在模板中使用表单的各种属性和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值