2017-07-17 3 views
1

私はユーザーがフォーム内のユーザーデータを編集できるように私のコンポーネントに反応的なフォーム設定をしています。このフォームのAngular2 Reactiveフォームはフォームグループ内の要素を無効にする

、そこに表の行は、各行の最後にその行のすべての入力を無効にし、または可能にするチェックボックスです。ユーザーは基本的に入力データのグループを記入することができます。ここで

は私のフォームグループである:

slice3: this.fb.group({ 
    shitStatus: { value: 0 }, 
    hour_start: { value: '1', disabled: true }, 
    minute_start: { value: '00', disabled: true }, 
    period_start: { value: 'AM', disabled: true }, 
    hour_end: { value: '1', disabled: true }, 
    minute_end: { value: '00', disabled: true }, 
    period_end: { value: 'AM', disabled: true }, 
    days: this.fb.group({ 
     day_Su: { value: '', disabled: true }, 
     day_M: { value: '', disabled: true }, 
     day_Tu: { value: '', disabled: true }, 
     day_W: { value: '', disabled: true }, 
     day_Th: { value: '', disabled: true }, 
     day_F: { value: '', disabled: true }, 
     day_Sa: { value: '', disabled: true } 
    }) 
}) 

私は、彼らがチェックするか、チェックボックスのチェックを外したときに、このフォームグループ内のすべての要素を切り替え機能を持っている:

toggleSlice(slice) { 

    if (this.transitionForm.get('shift.slice' + slice).disabled) { 
    this.transitionForm.get('shift.slice' + slice).enable(); 
    } else { 
    this.transitionForm.get('shift.slice' + slice).disable(); 
    } 

} 

私の問題が原因DOですshiftStatusはフォームグループの一部ですが、トグルボタンも無効にしていますので、この要素のセットを元に戻すことができなくなります。

は、私は特定の入力を除いてshift.sliceで無効にすべてのものを言うことができますここでオペレータのいくつかのタイプを使用する方法はありますか?例えばjQueryので

、私は、この入力を除くすべてに、このロジックを適用言って:not("blah")ような何かを行うことができます。

は私が指定した1つを除いてフォームグループ内のすべてのこれらの要素を無効にすることができますJavaScriptで何かを行うことができますか?私が見

答えて

2

最も簡単な解決策は、すべてのフォームコントロールを無効にして、ちょうど私がより良い方法を考えることはできませんが、その1つのフォームコントロールを有効にすることです。

if (this.myForm.get('group').disabled) { 
    this.myForm.get('group').enable(); 
} else { 
    this.myForm.get('group').disable(); 
    this.myForm.get('group.shiftStatus').enable() 
} 

あなたも多分あなたはすべての時間getを呼び出す必要がないように、実際に変数にこのフォーム制御パスを格納することですが、それはただの提案であるたいと思う何を:ここだけの擬似コードです:)

+0

おかげで、実際には再有効化単一の要素について考えていませんでした...それは遅かった:) – SBB

+0

時々最も簡単な事はちょうど私達の目の前にあると見ることはできませんが、私たちのすべてに起こりますDはうれしいです解決策があなたのために受け入れられたと聞いて、私は本当にこれを処理するための最良の方法だと思います。 – Alex

関連する問題