私は強く、彼らが検証パターンとメッセージを管理するために、本当に良いですとあなたが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;
}
}
活字体の例のスニペット:ここで を例にリンクされているインターフェースである
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
は空の文字列値に設定されています。 フィールドにリンクされた配列に、必要なだけ多くのバリデータを追加することもできます。あなたは、あなたの主なFormGroup
から直接submit()
にフォームの値にアクセスすることができます
:この例では十分ではなかった場合は
this.user.value.account.email
は、私は強くあなたがあるReactiveForms
上トッドモットーのガイドを読むことをお勧め本当によく説明:
https://toddmotto.com/angular-2-forms-reactive
私はhttps://material.angular.io/を使用することに注意してくださいなぜなら私は 'md-name' html要素を持っているからです。だから、あなたの 'md-hint'はおそらく単純な' div' –
になりますが、私はすでに私のプロジェクトでそれがあるので、TemplateDrivenFormsを検証する必要があります。 – playerone
それはちょうど別のフォームですが、仕事をしたいものを作ることができます。このフォームを変更する必要があります。アプリケーションに他のテンプレート駆動型がある場合でも、それは魅力的です。 –