2017-11-04 1 views
2

Ich möchte den Validator "addressLine1" deaktivieren; Wie kann ich es deaktivieren? Sehen Sie es innerhalb von "Adresse" Element verschachtelt istAngular 4: Deaktivierung verschachtelter Formvalidatoren

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

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

     }) 

ich dies unten versucht, aber es hat nicht funktioniert

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

Danke

Hier ist die html:

<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> 

Antwort

2

Die korrekte Syntax sein sollte:

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

oder noch besser

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

Stackblitz example

aktualisieren

Validator den folgenden Code deaktivieren verwenden:

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

Stackblitz Example

+0

Sie haben das ganze Feld deaktiviert, anstatt nur die Validator-Checks zu deaktivieren. – BadGuyKUTA

+0

Was erwarten Sie beim Aufruf der 'disable' Methode? – yurzui

+0

Ich will, dass es nur den Validator für dieses Feld deaktiviert, damit ich das Formular speichern kann, ohne in diesem Feld eingegeben zu haben – BadGuyKUTA

1

Wir müssen Parameter an disable Methode übergeben wie uns sagt:

enter image description here

Also, wenn Sie keine Parameter übergeben müssen, geben Sie einfach ein leeres Objekt, und der Code sollte wie folgt aussehen:

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

@BadGuyKUTA, nicht wahr hinzuzufügen vergessen '[formGroup] = "form" 'zu deinem' form' Element und 'formControlName =" addressLine1 "' (das Beispiel für addressL ine1 control) an deinen 'Eingängen'? –

+0

Ich habe gerade den ursprünglichen Beitrag bearbeitet und den HTML-Code hinzugefügt, den formControlName bereits – BadGuyKUTA

+0

@BadGuyKUTA hat, und das Formular-Tag sieht folgendermaßen aus: '

'? –