2017-09-19 6 views
1

テンプレートドフォーム用のカスタムバリデーターを作成しようとしています。秒も必要ありません。角2+カスタムバリデーター "別のフィールドが埋め込まれている場合"

カスタムバリデータディレクティブを作成するためのドキュメントの(typescript)例に続いて、フィールドでその実行を取得し、別のものの名前を渡すことができます。ここに私の質問があります...

フィールド1に値が入力されていて、フィールド2が空であることを確認すると、フィールド2で「無効」を設定するにはどうすればよいですか? (私は、そのAbstractControlへのアクセス権があることを認識しています)。

フィールド2で「無効」を設定した場合、入力時に無効なステータスを削除するには、フィールド2で別のバリデーターが必要ですか?

フィールド1のバリデーターがトリガーされたときに、フィールド2に組み込みの「必須」バリデーターを追加する必要がありますか?

多くのありがとうございました!

答えて

2

私はあなたがカスタムバリデータなしで何を達成できるかと思います。

以下のコードはテンプレート駆動フォームからのものです。第2フィールドのrequiredバリデータディレクティブと第1フィールドのngModelの値をバインドします。したがって、最初のフィールドに値がある場合は、2番目のフィールドに条件付きの検証が適用されます。条件付きの検証バインディングの

First: <input type="text" name="first" [(ngModel)]="theFirst" #first="ngModel" > 

Second: <input type="text" ngModel [required]="theFirst ? true : null " #second="ngModel" name="second"/> 

<div *ngIf="second.errors"> 
    <span [hidden]="!second.errors.required">Second is required</span> 
</div> 

さらなる議論がhereです。

+0

これはシンプルでエレガントです。多くの感謝です! – steverippl

関連する問題