Maison >interface Web >js tutoriel >Explication détaillée des étapes de vérification du formulaire dans angulaire4
Cette fois, je vais vous apporter une explication détaillée des étapes de vérification du formulaire dans angulaire4. Quelles sont les précautions à propos de la vérification du formulaire angulaire4. Voici un cas pratique, jetons un coup d'oeil.
Ce chapitre présente la création de formulaires réactifs et la vérification des valeurs d'entrée du formulaire. Nous ignorerons les modèles de formulaires.
1. Étapes pour utiliser les formulaires réactifs
1. Introduisez ReactiveFormsModule
dans le module (généralement app.module.ts) 2. Utilisez des formulaires réactifs
import { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms'; export class ReactiveFormComponent implements OnInit { private myForm: FormGroup; constructor(private fb: FormBuilder) { this.createForm(); } ngOnInit() { } // 创建表单元素 createForm() { this.myForm = this.fb.group({ username: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(6)]], mobile: ['', [Validators.required]], password: this.fb.group({ pass1: [''], pass2: [''] }) }); } // 提交表单函数 postDate() { /** * valid:是否有效 * invalid:无效 * dirty:脏 * status:状态 * errors:显示错误 */ if(this.myForm.valid){ console.log(this.myForm.value); } } }
dans le fichier ts du composant 3. Utilisez
<form [formGroup]="myForm" (ngSubmit)="postDate()"> <p class="form-group"> <label for="username">用户名:</label> <input type="text" placeholder="请输入用户名" class="form-control" id="username" formControlName="username" /> </p> <p class="form-group"> <label for="mobile">手机号码:</label> <input type="text" placeholder="请输入手机号码" class="form-control" id="mobile" formControlName="mobile"/> </p> <p formGroupName="password" style="border:none;"> <p class="form-group"> <label>密码:</label> <input type="password" class="form-control" placeholder="请输入密码" formControlName="pass1" /> </p> <p class="form-group"> <label>确认密码:</label> <input type="password" class="form-control" placeholder="请再次输入密码" formControlName="pass2" /> </p> </p> <p class="form-group"> <input type="submit" value="提交" class="btn btn-warning" [disabled]="!myForm.valid" /> </p> </form>
dans la page html du composant 2. Utilisez des formulaires pour vérifier les données
1. Angular est livré avec trois validations de formulaire courantes : obligatoire, minLength, maxLength
dans les validateurs 2. Validateur de formulaire personnalisé (en fait juste une fonction, paramètres de la fonction est la ligne actuelle qui doit être vérifiée , et renvoie un objet arbitraire)
**格式** export function fnName(control:FormControl|FormGroup):any{ }
3. Trois valeurs peuvent être écrites dans le champ du formulaire réactif. La première est renvoyée à la page, le deuxième paramètre est le validateur (peut être un groupe) et le troisième paramètre est la vérification asynchrone (jugement commun du téléphone mobile). numéro, le nom d'utilisateur est enregistré à plusieurs reprises)
3. Étapes pour personnaliser une méthode de vérification
1. Écrivez un fichier séparé pour le validateur nécessaire au projet
import { FormControl, FormGroup } from '@angular/forms'; /** * 自定义验证器(其实就是一个函数,一个返回任意对象的函数) * 传递的参数是当前需要验证的表单的FormControl * 通过传递的参数获取当前表单输入的值 */ export function mobileValidator(control: FormControl): any { console.dir(control); // 获取到输入框的值 const val = control.value; // 手机号码正则 const mobieReg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/; const result = mobieReg.test(val); return result ? null : { mobile: { info: '手机号码格式不正确' } }; }
2. Utilisez votre propre validateur défini
createForm() { this.myForm = this.fb.group({ username: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(6)]], mobile: ['', [Validators.required, mobileValidator]], password: this.fb.group({ pass1: [''], pass2: [''] }) }); }
3. Définir la vérification d'un groupe de chiffrement
// 定义一个密码组的验证方法 export function passValidator(controlGroup: FormGroup): any { // 获取密码输入框的值 const pass1 = controlGroup.get('pass1').value as FormControl; const pass2 = controlGroup.get('pass2').value as FormControl; console.log('你输入的值:', pass1, pass2); const isEqule: boolean = (pass1 === pass2); return isEqule ? null : { passValidator: { info: '两次密码不一致' } }; }
4. Utilisez
createForm() { this.myForm = this.fb.group({ username: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(6)]], mobile: ['', [Validators.required, mobileValidator]], password: this.fb.group({ pass1: [''], pass2: [''] }, {validator: passValidator}) }); }
4. Concernant l'affichage des erreurs sur la page front-end
1. Erreur d'affichage de la page
<p class="form-group"> <label for="username">用户名:</label> <input type="text" placeholder="请输入用户名" class="form-control" id="username" formControlName="username" /> <!-- 当输入框没有访问的时候或者合法的时候不显示 --> <p [hidden]="myForm.get('username').valid || myForm.get('username').untouched"> <p [hidden]="!myForm.hasError('required','username')">用户名必填的</p> <p [hidden]="!myForm.hasError('minlength','username')">用户名长度过短</p> <p [hidden]="!myForm.hasError('maxlength','username')">用户名长度太长</p> </p> </p> <p class="form-group"> <label for="mobile">手机号码:</label> <input type="text" placeholder="请输入手机号码" class="form-control" id="mobile" formControlName="mobile"/> <p [hidden]="myForm.get('mobile').valid || myForm.get('mobile').untouched"> <p [hidden]="!myForm.hasError('mobile', 'mobile')">{{myForm.getError('mobile', 'mobile')?.info}}</p> </p> </p> <p formGroupName="password" style="border:none;"> <p class="form-group"> <label>密码:</label> <input type="password" class="form-control" placeholder="请输入密码" formControlName="pass1" /> </p> <p class="form-group"> <label>确认密码:</label> <input type="password" class="form-control" placeholder="请再次输入密码" formControlName="pass2" /> </p> <!-- 对于group可以不在外面加一层判断 --> <p> <p [hidden]="!myForm.hasError('passValidator','password')"> {{myForm.getError('passValidator','password')?.info}} </p> </p> </p>
2. Définir les fichiers de style
.ng-touched:not(form),.ng-invalid:not(form) { border: 1px solid #f00; } .ng-valid:not(form),.ng-untouched:not(form) { border: 1px solid #ddd; } p{ color:#f00; }
5. Erreur d'affichage de la classe personnalisée
1. Écrivez
dans la zone de saisie Indique que le champ n'est pas valide et a été touché. Ajoutez cette classe="erreur"
[class.error]="myForm.get('username').invalid && myForm.get('username').touched"
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez faire attention. vers d'autres articles connexes sur le site Web PHP chinois !
Lecture recommandée :
Comment utiliser l'attribut calculé dans Vue
Explication détaillée de l'utilisation de get ajax natif et méthodes de publication
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!