私は自分のデータモデルからコントロールを作成する反応的なフォームを持っています。最初は、すべてが「processingOrder」と呼ばれるデータポイントによってソートされます。角反応型の隠れた入力はバインディングではありませんか?
フォーム配列内では、*ngFor
を使用してコントロールを反復処理し、インデックスを隠したform control
に格納しています。私のテーブル内でレコードを上下に動かすと、隠しフィールドに適用されているインデックスには、モデルの変更が反映されるはずです。
<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>
私は私のplunkerで、処理順序番号は常に1-5順番に残るべきとするたびに、ルールは、モデルは、それが受信した新しいインデックスに更新され、上下に移動されることを期待しているだろう
。
https://plnkr.co/edit/ZCgHPEaUM00aLxM6Sf9t?p=preview
によって上書きされることに注意してください - オブジェクトからルールを削除するときに小さな問題が発生しただけです。削除する前にルールを移動していない場合は、削除ごとにルールが正しい順序でインデックスに表示され続けます。しかし、ルールを移動して削除すると、レコードが削除された場所のインデックスが古いインデックスを保持しているように見えます。 2つのレコードを同じ処理順序でオブジェクトに残して終了します。それがどうなるかについての考えはありますか? – SBB
「削除」ボタンでプランナーを更新しましたが、正しく機能しているようです。私のプランナーを更新してください(https://plnkr.co/edit/NvSkiutOQLeu9i41H1AT?p=preview)ので、私があなたの問題を再現できるようにしてから、私は助けようとします – Andriy
ありがとう、私の問題は他の場所にあります。しかし、ngModelは私の問題を解決しました。反応性のあるフォームで使用できることは知らなかった。 – SBB