2017-11-04 6 views
2

"addressLine1"バリデータを無効にしたい。どうすればそれを無効にすることができますか?角4:ネストされたフォームバリデータを無効にする

<form [formGroup]="form"> 

<div ><label><span class="required">*</span>State/Province/Region<br><input class="form-control" pInputText formControlName="addressLine1" [(ngModel)]="selected.address.addressLine1" required></label></div> 

</form> 
:それは

this.form = fb.group({   
      'region': [null, Validators.required], 

      'address': fb.group({    
       'addressLine1': ["", Validators.required], 
       'addressLine2': [""], 
       'city': ["", Validators.required]    
      }), 

     }) 

"アドレス" 要素の内部にネストされた時に、私は以下にこれを試してみましたが、それは

this.form.controls["address"]["addressLine1"] .disable(); 

を動作しませんでした見ることはここで

はhtmlですありがとう

答えて

2

正しい構文は次のようになります。

(this.form.controls["address"] as FormGroup).controls["addressLine1"].disable({}); 

またはより良い

this.form.get('address.addressLine1').disable(); 

Stackblitz example

更新

次のコードを使用バリデータを無効にするには:

const control = this.form.get('address.addressLine1'); 
control.setValidators(null); 
control.updateValueAndValidity(); 

Stackblitz Example

+0

バリデータチェックだけを無効にするのではなく、フィールド全体を無効にしました – BadGuyKUTA

+0

'disable'メソッドを呼び出すときに何を期待していますか? – yurzui

+0

私はフィールドのバリデータを無効にして、そのフィールドに入力しなくてもフォームを保存できるようにしたい – BadGuyKUTA

1

disableメソッドにパラメータを渡す必要があります。私たちはdocs says us:

enter image description here

だから、あなただけの空のオブジェクトを渡し、任意のパラメータを渡す必要はありませんし、コードは次のようになります場合:

this.form.controls["address"]["addressLine1"].disable({}); 
+0

@BadGuyKUTAを、あなたは[formGroup] 'を追加することを忘れませんでした= "form"要素と "formControlName =" addressLine1 "'に変換します(addressLの例ine1 control)を 'input'sに追加しますか? –

+0

私はちょうど元の投稿を編集し、すでに – BadGuyKUTA

+0

@BadGuyKUTAというformControlNameを持つhtmlを追加しました。フォームタグは次のようになります: '

'? –

関連する問題