2017-08-07 6 views
0

角度応答フォームの入力のバリデータをプログラムで変更する必要があります。角度応答型入力は、setValidatorsがrequiredに設定されていてもプリスティンで有効です

だから私は、フォームを初期化:

... 
limitNumber: [{ value: null, disabled: (this.id ? true : false) }] 
... 

そして後で私が入力を有効にし、要求されるようにそのバリデータを変更します。

this.newEventForm.get('limitNumber').enable(); 
this.newEventForm.get('limitNumber').setValidators(Validators.required); 

右この後、入力の状態がVALIDですそれが元のままである限り。入力値を編集して消去すると、 'INVALID'になります。

私の問題は、バリスタをrequiredに設定してすぐに入力が無効になる必要があるということです。

どうすればいいですか?

***** ***** EDIT

私の目標は、条件付きで必要とされる入力を行うことができるようにすることです。 ユーザーがイベントを作成したとします。新しいイベントフォームでは、参加者の最大数を設定することができます。 ユーザが入力を切り替えると(「isLimited」と呼ぶことができます)、この数値制限を入力するには新しい入力が必要です。この制限は有効になります(これを 'limitNumber'入力と呼びます)。私はちょうど妥当性を確認するには、次のコードを使用していた「isLimited」は、入力が真

+0

ない理由あなたはここにulitmateの目標は何か、他の簡単な方法があるかもしれないというような機能が必要です。 –

+0

あなたはそのformControlを取得し、このように役立つ可能性のあるマークをつける必要があります。this.formControl.control.markAsUntouched({onlySelf:true}); –

+0

@RahulSingh私は、手を触れずに触れ、汚れてみました。究極の目標について私の記事で私の編集を参照してください。より明確になることを願って –

答えて

1

トグルされる場合にのみ、「必要」

だから私の究極の目標は、この入力を行うことである。

this.newEventForm.get('limitNumber').updateValueAndValidity(); 
関連する問題