2016-07-26 9 views
5

角度RC4他のFormControlsまたはFormGroupの状態に基づいてバリデーションを追加および削除する方法。これは、複数のバリデータを設定するために.composeを使用する例 - では、このポストAngular2 validator which relies on multiple form fieldsangular2バリデーション:コントロールの現在のバリデーターを見つける

に基づいて

。それは

this.form.controls["empID"].validator = Validators.compose([Validators.pattern("[0-9]{7}"), Validators.required]); 
this.form.controls["empID"].updateValueAndValidity(); 

私の問題は、私はFormControl見つけることができないです(.addをまたは.remove)現在の検証(一度に1バリ)を変更するValidator.compose

新しいあなたとの既存のバリデータに置き換えられます。 Validators.requiredを追加/削除する場合は、現在のバリデータ(別の問題)を取得し、新しい.composeにrequireを追加/削除する必要があります。 (上記の例)

私はこのプロセスを熟考しています。バリデーターを動的に追加するには、すべてのバリデーターがわかっていなければなりません。

最後に、コントロールを渡して別のコントロールがチェックされているかどうか評価し、それに応じてバリデータを適用/削除します。

答えて

0

Angularの文書によれば、これは不可能です。 AbstractControl documentation(FormControlが継承するクラス)には、現在のバリデータを取得するメンバーはありません。

残念ながら、あなたの唯一のオプションは、バリに対処するために利用できる2つのメソッドを使用することです:

setValidators() // Replaces all validators 
clearValidators() // Removes all validators 
関連する問題