私は反応型で角度4を使用しています。私は自分のコンポーネントで追跡している配列に結びつけようとしているフォーム配列を持っています。私は反応形式を使用しているので、検証ができるので、テンプレート形式のアプローチを使用したくありません。角度の配列で変更された項目のインデックスを取得する方法
私はそうのようなフォームの配列に項目を追加します。
createFormWithModel() {
this.orderForm = this.fb.group({
orderNumber: [this.order.ProductBookingOrder],
orderDate: [this.order.PurchaseOrderIssuedDate],
lineDetailsArray: this.fb.array([])
})
const arrayControl = <FormArray>this.orderForm.controls['lineDetailsArray'];
this.order.ProductBookingDetails.forEach(item => {
let newGroup = this.fb.group({
ProductName: [item.ProductName],
Quantity: [item.ProductQuantity.Quantity],
UOM: [item.ProductQuantity.UOM],
RequestedShipDate: [item.RequestedShipDate]
})
})
}
orderFormは明らかに私の反応性の形であるFormGroup。注文は自分のAPIから取得したオブジェクトで、ラインの詳細を含めてその値を更新したいと考えています。私はそれぞれのnewGroupで 'valueChanges.subscribe'を使うべきだと思いますが、変更された項目のインデックスを取得する方法がわかりません。何かご意見は?
newGroup.valueChanges.subscribe('i want value and index some how' => {
this.order.ProductbookingDetails[index].ProductName = value.ProductName;
});
は、ここでは、この部分のHTMLです:
<tbody formArrayName="lineDetailsArray">
<tr [formGroupName]="i" *ngFor="let line of orderForm.controls['lineDetailsArray'].controls; index as i">
<td><input class="form-control" type="text" placeholder="Product Name" formControlName="ProductName" required/></td>
<td><input class="form-control" type="number" step=".01" (focus)="$event.target.select()" placeholder="Quantity" formControlName="Quantity"/></td>
<td><input class="form-control" readonly formControlName="UOM"></td>
<td><date-picker formControlName="RequestedShipDate" format="L" [showClearButton]="false"></date-picker></td>
<td><button type="button" (click)="deleteLineDetail(i)">Remove</button></td>
</tr>
</tbody>
なぜ各行の詳細を保存しますか?なぜあなたは合計モデルを送ることができません – CharanRoot
私はAPIから私の注文モデルを得る余分なものがたくさんありますが、私はorderFormモデルにそのようなものがほしいだけです。 orderFormモデルは、ユーザーが更新できる情報を更新できるようにするためのものです。ですから、私は、他のすべての情報が欠落しているため、完了した時点でorderFormモデルをAPIに送ることはできません。フォーム入力が変更されたときに私の注文モデルの値が更新されるようにします。 – Kevin