Проблема:
Я создал реактивную форму в angular, которая динамически добавляет поле формы, когда пользователь нажимает кнопку «плюс». Вот так выглядит мой код.
<form [formGroup]="distributionAddForm" (ngSubmit)="onSubmit(distributionAddForm.value)">
<div class="row">
<div class="col-lg-10">
<div formArrayName="stocks">
<div *ngFor="let item of distributionAddForm.controls.stocks.controls; let stockIndex=index"
[formGroupName]="stocks">
<span>Product Item {{stockIndex + 1}}</span>
<div class="form-group">
<label>Stock :</label>
<div class="input-group input-group-alternative mb-3">
<select class="custom-select" id="stockid" formControlName="stockId">
<option value="0">Select Stock Item</option>
<option value="1">GOGREEN MEGA 500ml</option>
<option value="2">GOGREEN PLUS 500ml</option>
</select>
</div>
</div>
<div class="row">
<div class="col-lg-10">
<div class="form-group">
<label>Quantity :</label>
<div class="input-group input-group-alternative mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="nc-icon nc-box"></i></span>
</div>
<input class="form-control" placeholder="10" type="text" formControlName="quantity"
required />
</div>
</div>
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-danger btn-sm" (click)="removeProducts(stockIndex)"><i
class="fas fa-minus-circle"></i></button>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-2">
<button type="button" class="btn btn-info btn-sm mt-4" (click)="addProducts()"><i
class="fas fa-plus-circle"></i></button>
</div>
</div>
<button type="submit" class="btn btn-success" [disabled]="!distributionAddForm.valid">Add</button>
</form>
Вот как я это сделал в файле component.ts.
constructor(
private formBuilder: FormBuilder,
) {
this.distributionAddForm = this.formBuilder.group({
stocks: this.formBuilder.array([this.initStocks()])
});
}
initStocks() {
return this.formBuilder.group({
stockId: ['0', Validators.required],
quantity: ['', Validators.required]
});
}
get AllStockItems(){
return this.distributionAddForm.get('stocks') as FormArray;
}
addProducts() {
const control = <FormArray>this.distributionAddForm.controls['stocks'];
control.push(this.initStocks());
}
removeProducts(i: number) {
if(this.AllStockItems.length>1){
const control = <FormArray>this.distributionAddForm.controls['stocks'];
control.removeAt(i);
}
}
Когда мы рассматриваем этот фрагмент кода в компоненте. html file. <span>Product Item {{stockIndex + 1}}</span>
stockIndex + 1 показывает число только в первом поле ввода. Он не показывает это число на динамически добавленных вторых входных наборах. Может кто-нибудь сказать мне, где я поступил неправильно? Большое спасибо.