我将模式属性添加到模板
<input class="form-control" type="text" id="elementName"
[(ngModel)]="elementName" name="elementName"
(input)="onElementNameChanged()" #name="ngModel" required pattern="[A-Za-z0-9_)*\S]*" >
如果输入不正确,如何在显示时添加消息?
像工作一样:
<div [hidden]="!name.errors.pattern"
class="alert alert-danger">
Name must match pattern
</div>
答案 0 :(得分:1)
我强烈建议您使用ReactiveForms
代替TemplateDrivenForms
,因为它们非常适合管理验证模式和消息。
HTML摘录示例:
<form novalidate [formGroup]="user" (ngSubmit)="onSubmit()">
<div formGroupName="account">
<md-input-container>
<input md-input type="text" placeholder="{{'USER.EMAIL' | translate}} *" formControlName="email" autocomplete="off">
<md-hint class="error" *ngIf="user.get('account.email').hasError('required') && user.get('account.email').touched">
{{'VALIDATOR.EMAIL_RQ' | translate}}
</md-hint>
<md-hint class="error" *ngIf="user.get('account.email').hasError('pattern') && user.get('account.email').touched">
{{'VALIDATOR.WRONG_EMAIL' | translate}}
</md-hint>
</md-input-container>
<md-input-container>
<input md-input type="password" placeholder="{{'USER.PASSWORD' | translate}} *" minlength="6" formControlName="password" autocomplete="off">
<md-hint class="error" *ngIf="user.get('account.password').hasError('required') && user.get('account.password').touched">
{{'VALIDATOR.PWD_RQ' | translate}}
</md-hint>
</md-input-container>
</div>
<button md-raised-button [disabled]="!user.valid || submitted" color="accent" type="submit" class="submit-button">
{{'LOGIN.BUTTON' | translate}}
</button>
</form>
此HTML示例显示了带验证的登录表单。请注意md-hint
元素仅在表单在特定字段中具有验证错误时才会显示。
您实际上可以设置一个与ReactiveForm
匹配的界面。
以下是链接到示例的界面:
export interface Account {
account: {
email: string;
password: string;
}
}
TypeScript示例代码段
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { EmailRegex } from 'app/shared/shared.interface'; // Imported regex for validator
...
user: FormGroup;
ngOnInit() {
...
// Init your reactive form
this.user = this.formBuilder.group({
account: this.formBuilder.group({
email: ['', [Validators.required, Validators.pattern(EmailRegex)]],
password: ['', Validators.required]
})
});
}
请注意表单组如何与界面匹配。此外,您可以根据需要设置表单值,但正如您所看到的,我的字段email
和password
设置为空字符串值。
请注意,您还可以在链接到该字段的数组中添加任意数量的验证器。
然后,您可以直接从主submit()
FormGroup
访问您的表单值:
this.user.value.account.email
如果这个例子不够好,我强烈建议你阅读Todd Motto关于ReactiveForms
的指南,这是非常好的解释: