如何让'email'输入框错误信息显示在输入框外?
How to make 'email' input filed error message to display outside the input box?
我使用的是反应形式,并且有多个输入字段,每个字段都有各自的垫错误。所有的输入框错误信息都出现在输入框外,这是正确的,也是默认的。但是电子邮件输入字段是唯一的,它的错误消息出现在输入字段内。
这是代码
<!-- username -->
<div class="">
<mat-form-field class="">
<input type="email" matInput
placeholder="Email"
formControlName="username" required>
<div *ngIf="isFieldValid('username')">
<mat-error
*ngIf="modelForm.controls['username'].hasError('required')
&&
modelForm.get('username').touched">
This is required
</mat-error>
<mat-error
*ngIf="modelForm.controls['username'].hasError('pattern')">
Email invalid
</mat-error>
<mat-error
*ngIf="!modelForm.controls['username'].hasError('required')
&&
!modelForm.controls['username'].hasError('pattern')
&&
modelForm.controls['username'].hasError('isDupe')">
This email has been used already
</mat-error>
</div>
</mat-form-field>
</div>
<!-- password -->
<div class="">
<mat-form-field class="">
<input matInput type="password" placeholder="Password"
formControlName="password" required>
<mat-error
*ngIf="password.hasError('required')">
This is required
</mat-error>
<mat-error
*ngIf="password.hasError('pattern')">
Password should contain at least one number
</mat-error>
</mat-form-field>
</div>
我想让电子邮件错误消息出现在输入字段下方,类似于密码错误消息。
移除 <div *ngIf="isFieldValid('username')">
在 Html 文件中这样走:
<form [formGroup]="registerForm" (ngSubmit)="onSubmit()">
<div class="form-group">
<label>First Name</label>
<input type="text" formControlName="firstName" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.firstName.errors }" />
<div *ngIf="submitted && f.firstName.errors" class="invalid-feedback">
<div *ngIf="f.firstName.errors.required">First Name is required</div>
</div>
</div>
<form/>
并且在 TS 文件中:
export class AppComponent implements OnInit {
registerForm: FormGroup;
submitted = false;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.registerForm = this.formBuilder.group({
firstName: ['', Validators.required]
});
}
// convenience getter for easy access to form fields
get f() { return this.registerForm.controls; }
onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this.registerForm.invalid) {
return;
}
alert('SUCCESS!! :-)\n\n' + JSON.stringify(this.registerForm.value))
}
}
还有这一行<div *ngIf="isFieldValid('username')">
完全不允许创建 div
我使用的是反应形式,并且有多个输入字段,每个字段都有各自的垫错误。所有的输入框错误信息都出现在输入框外,这是正确的,也是默认的。但是电子邮件输入字段是唯一的,它的错误消息出现在输入字段内。
这是代码
<!-- username -->
<div class="">
<mat-form-field class="">
<input type="email" matInput
placeholder="Email"
formControlName="username" required>
<div *ngIf="isFieldValid('username')">
<mat-error
*ngIf="modelForm.controls['username'].hasError('required')
&&
modelForm.get('username').touched">
This is required
</mat-error>
<mat-error
*ngIf="modelForm.controls['username'].hasError('pattern')">
Email invalid
</mat-error>
<mat-error
*ngIf="!modelForm.controls['username'].hasError('required')
&&
!modelForm.controls['username'].hasError('pattern')
&&
modelForm.controls['username'].hasError('isDupe')">
This email has been used already
</mat-error>
</div>
</mat-form-field>
</div>
<!-- password -->
<div class="">
<mat-form-field class="">
<input matInput type="password" placeholder="Password"
formControlName="password" required>
<mat-error
*ngIf="password.hasError('required')">
This is required
</mat-error>
<mat-error
*ngIf="password.hasError('pattern')">
Password should contain at least one number
</mat-error>
</mat-form-field>
</div>
我想让电子邮件错误消息出现在输入字段下方,类似于密码错误消息。
移除 <div *ngIf="isFieldValid('username')">
在 Html 文件中这样走:
<form [formGroup]="registerForm" (ngSubmit)="onSubmit()">
<div class="form-group">
<label>First Name</label>
<input type="text" formControlName="firstName" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.firstName.errors }" />
<div *ngIf="submitted && f.firstName.errors" class="invalid-feedback">
<div *ngIf="f.firstName.errors.required">First Name is required</div>
</div>
</div>
<form/>
并且在 TS 文件中:
export class AppComponent implements OnInit {
registerForm: FormGroup;
submitted = false;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.registerForm = this.formBuilder.group({
firstName: ['', Validators.required]
});
}
// convenience getter for easy access to form fields
get f() { return this.registerForm.controls; }
onSubmit() {
this.submitted = true;
// stop here if form is invalid
if (this.registerForm.invalid) {
return;
}
alert('SUCCESS!! :-)\n\n' + JSON.stringify(this.registerForm.value))
}
}
还有这一行<div *ngIf="isFieldValid('username')">
完全不允许创建 div