0

Ich habe ein Formular mit md-select und md-radio-button Felder. Die Optionen unter dem Optionsfeld werden entsprechend der in md-select ausgewählten Option angezeigt. Bitte besuchen Sie die plunker.Angular2 Reactive Form: Validieren Sie Felder innerhalb * ngIf

Sie können sehen, ich habe das Formular mit dem Radio-Button-Feld des Unterorganisator erstellt, um erforderlich zu sein. Es funktioniert bei der ersten Ladung. Wenn wir jedoch eine Unteroption auswählen und dann das Auswahlfeld für die Organisation ändern, ist das Formular weiterhin gültig, ohne dass ein gültiger Unterorganisationswert vorliegt. Ich brauche das Formular, um ungültig zu sein, wenn das Sub-Optionsfeld nicht aktiviert ist. Bitte helfen Sie.

Frage 2: Auch in den Plunks, bitte entfernen Sie die folgenden Zeilen nach Zeile 47 in app.component.ts, so dass es einen Standardwert für die Felder gibt. Die Radioknöpfe des Unterorganismus werden angezeigt, aber die Auswahlbox ist leer. Es gibt den ausgewählten Wert und das ist der Grund, warum Unterorganismusfelder angezeigt werden. Nicht sicher, warum die Option nicht für Organismen gewählt wurde MD-Select.

+3

Für Frage 2 zeigt das Plunk mit FormControl mit NgModel. Sie schließen sich gegenseitig aus, daher sollte nur einer verwendet werden. Beachten Sie auch, dass md-select Werte mit * Objektreferenz * nicht Objektwert –

Antwort

1

ein change Ereignis md-select hinzufügen, so dass, wenn sich die Auswahl ändert, und das Formular validiert wurde, können Sie den Wert von selected.sub_organism_id auf null zurücksetzen. Das wird das Formular ungültig machen.

-Code-Schnipsel:

html:

<md-select [formControl]="form.controls['organism']" 
      style="width:100%;" 
      [(ngModel)]="selected.organism_id" 
      (change)="resetForm($event)"> 
    <md-option *ngFor="let organism_id of getIds()" [value]="organism_id"> 
    {{ organisms[organism_id].name }} 
    </md-option> 
</md-select> 

ts:

resetForm(org){ 
    if(this.form.valid){ 
    this.selected.sub_organism_id = null; 
    }; 
} 

Edited Plunk

Update:

Wie @WillHowell in seinem Kommentar sagte, "md-select vergleicht Werte nach Objektreferenz und Objektwert", was wahr ist. Ich habe Ihre Daten in eine Array-Objekt-Beziehung geändert und md-select default word here.

+0

vergleicht Danke für Ihre Antwort und ich habe den ersten Teil funktioniert. Die letzte Plunkerverbindung ist die gleiche, mit Schlüssel: Objektbeziehung. Es wäre großartig, wenn Sie einen funktionierenden einfügen könnten, da ich Frage2 nicht funktionierend machen könnte. – Jithin

+0

Entschuldigung, ich habe den richtigen Link für den zweiten Teil hinzugefügt. Lass mich wissen was du denkst – Nehal

Verwandte Themen