Ich habe eine reaktive Form, wo ich die Steuerelemente aus meinem Datenmodell erstellen. Anfangs wird alles in numerischer Reihenfolge nach einem Datenpunkt namens "processingOrder" sortiert.Angular reaktive Form versteckter Eingang nicht verbindlich?
In meinem Formulararray verwende ich *ngFor
, um über Steuerelemente zu iterieren und den Index in einem versteckten form control
zu speichern. Wenn ich einen Datensatz in meiner Tabelle nach oben oder unten verschiebe, sollte der Index, der auf das ausgeblendete Feld angewendet wird, die Änderung in meinem Modell widerspiegeln?
<form [formGroup]="rulesForm" (ngSubmit)="onSubmit(form)">
<div formGroupName="ruleData">
<div formArrayName="rules">
<div *ngFor="let child of rulesForm.controls.ruleData.controls.rules.controls; let i = index">
<div formGroupName="{{i}}">
<input type="text" placeholder="Rule Name" formControlName="name"/>
<input type="text" placeholder="Rule Description" formControlName="description"/>
<input type="text" placeholder="Processing Order" formControlName="processingOrder"/>
<button class="button" (click)="move(-1, i)">Move Up</button>
<button class="button" (click)="move(1, i)">Move Down</button>
<!-- Why doesn't this update my model when it gets a new index? -->
<input type="hidden" formControlName="processingOrder" [value]="i">
</div>
</div>
</div>
</div>
<button type="submit">Submit</button>
</form>
ich, dass es erhielt in meinem Plunker erwartet hätte, wird die Verarbeitungsreihenfolge-Nummern immer in der 1-5 Reihenfolge bleiben sollten und jedesmal, wenn eine Regel nach oben oder unten, wird das Modell auf den neuen Index aktualisiert .
https://plnkr.co/edit/ZCgHPEaUM00aLxM6Sf9t?p=preview
Diese gut zu funktionieren scheint außer Kraft gesetzt werden - Ich habe nur ein kleines Problem, wenn ich eine Regel aus meinem Objekt lösche. Wenn ich vor dem Löschen keine Regeln verschoben habe, bleiben die Regeln bei jeder Entfernung in der richtigen Reihenfolge nach Index. Wenn ich jedoch eine Regel verschiebe und dann eine lösche, dann scheint der Index an der Stelle, an der der Datensatz entfernt wurde, seinen alten Index zu behalten. Ich denke? Am Ende bleiben 2 Datensätze im Objekt mit der gleichen Verarbeitungsreihenfolge. Irgendwelche Gedanken darüber, wie das passieren würde? – SBB
Ich habe Ihren Button mit dem 'Remove' Button aktualisiert, scheint richtig zu funktionieren. Bitte aktualisiere meinen Plocker (https://plnkr.co/edit/NvSkiutOQLeu9i41H1AT?p=preview) damit ich das von dir erwähnte Problem reproduzieren kann, dann werde ich versuchen zu helfen – Andriy
Danke, sieht aus wie mein Problem woanders ist. Das 'ngModel' löste mein Problem jedoch. War nicht bewusst, dass es mit reaktiven Formen verwendet werden könnte. – SBB