6

Angular 2 (beta.0) のテンプレート駆動型フォームとモデル駆動型フォームの長所と短所を見て、テンプレート駆動型フォームを使用して単純なテキスト入力フィールドにカスタム検証をどのように添付できるか疑問に思っています。このアプローチで使用できる例は (必須以外に) ないか、見つかりませんでした。

<form #f="ngForm">
  <label for="name">Name</label>
  <input type="text" ngControl="name" [(ngModel)]="obj.name" #name="ngForm">
  <button type="button" (click)="save()">Save</button>
</form>

検証関数の例として:

validate(control:Control):ValidationResult {
   if (control.value === 'Monkey') {
      return { invalidName: true }
   }
}

上記の検証関数は、FormBuilder を使用してモデル駆動型フォームで使用して機能します。テンプレート駆動型アプローチを使用してこれを行うにはどうすればよいでしょうか?

「それはありえないし、今後もあり得ない」というような答えです。または「それはベスト プラクティスではありません。モデル主導のアプローチを採用してください。」議論と一緒に私には問題ありません。(私はすでに方法がないと仮定していますが、ウェブには証拠がありません。私はモデル駆動型のアプローチをより好みます。)

4

3 に答える 3

2

テンプレート駆動フォームでは、カスタムバリデーターのディレクティブを作成し、それを html 属性のような入力要素に追加する必要があります (属性を追加するのと同じ方法required)。

カスタムバリデーターのディレクティブを作成する方法については、この記事をお読みください: http://blog.thoughtram.io/angular/2016/03/14/custom-validators-in-angular-2.html

于 2016-07-09T15:34:44.043 に答える