2017-03-16 13 views
9

すでに他の回答の例に従おうとしましたが、成功しませんでした。反応形式の入力フィールドを無効にする

私は反応型(すなわちダイナミック)を作成しましたが、いつでもいくつかのフィールドを無効にしたいと思います。私のフォームコード:

this.form = this._fb.group({ 

       name: ['', Validators.required], 
       options: this._fb.array([]) 

      }); 

const control = <FormArray>this.form.controls['options']; 
control.push(this._fb.group({ 

         value: [''], 

       })); 

私のhtml:

<div class='row' formArrayName="options"> 
    <div *ngFor="let opt of form.controls.options.controls; let i=index"> 
     <div [formGroupName]="i"> 
      <select formArrayName="value"> 
       <option></option> 
       <option>{{ opt.controls.value }}</option> 
      </select> 
     </div> 
    </div> 
</div> 

私は容易にするためのコードを削減。私はタイプ選択のフィールドを無効にしたい。私は次のことを試みました:

form = new FormGroup({ 
    first: new FormControl({value: '', disabled: true}, Validators.required), 
}); 

役に立った!誰にでも提案はありますか?

+0

あなたは 'first'と呼ばれるいくつかのformcontrolを無効にしようとしているときの選択は、無効にすることができる方法を' :) – Alex

+0

それはちょうどタイプミスでした。私は選択を無効にしたい。手伝って頂けますか? –

+0

プランナーを再現できますか? – Alex

答えて

0

first(formcontrol)を無効にする場合は、次のステートメントを使用できます。

this.form.first.disable();

14
name: [{value: '', disabled: true}, Validators.required], 
name: [{value: '', disabled: this.isDisabled}, Validators.required], 

または

this.form.controls['name'].disabled(); 
+4

disable()を意味しますか? – UUHHIVS

4

ご注意あなたが条件のための変数を使用してフォームを作成し、その後に、それはすなわち、フォームが変更されない、動作しません変更しようとした場合。

this.isDisabled = true; 

this.cardForm = this.fb.group({ 
    'number': [{value: null, disabled: this.isDisabled}, 
}); 

については

、あなたは変数

this.isDisabled = false; 

変更する場合、フォームは変更されません。

this.cardForm.get( 'number')。disable();使用する必要があります。

BTW。

あなたは値が変化するためpatchValueメソッドを使用する必要があります?

this.cardForm.patchValue({ 
    'number': '1703' 
}); 
+0

私は私の答え –

+0

がうまく動作しました – Amir

関連する問題