Назначьте выбранное значение для formarray

#javascript #angular #typescript

Вопрос:

У меня возникла проблема с тем, что я не могу присвоить выбранное значение полю formarray. Я использую ng-autocomplete , когда выбираю значение и создаю консоль.журнал группы форм это выглядит так, как будто я что-то выбираю и сохраняю в соответствующем поле, но когда я отправляю, я делаю другую консоль.журнал и пуст!

это мой HTML

 <fieldset formArrayName="material_guid" class="mt-4">

  <fieldset name="quantites" *ngFor="let quantity of quantities.controls; let i = index" [formGroupName]="i">

    <p>Material {{ i   1 }}</p>

    <ng-autocomplete [data]="dataMaterial" [searchKeyword]="keywordMaterial" (selected)='selectEventMaterialArray($event,i)' [itemTemplate]="itemTemplate" [notFoundTemplate]="notFoundTemplate" class="mb-4" placeholder="Selecciona un material" >
    </ng-autocomplete>

    <ng-template #itemTemplate let-item>
      <a [innerHTML]="item.nombre"></a>
    </ng-template>

    <ng-template #notFoundTemplate let-notFound>
      <div [innerHTML]="notFound"></div>
    </ng-template>

    <input type="number" min="1" max="3" class="form-control mb-4 mt-4" placeholder="Minimo" formControlName="minimo">

    <input type="number" min="1" max="3" class="form-control mb-4" placeholder="Maximo" formControlName="maximo">

    <button (click)="removeQuantity(i)" class="btn btn-danger">Quitar material</button>

  </fieldset>
</fieldset>
 

вот где я обнаруживаю, когда пользователь делает выбор

 selectEventMaterialArray(item, index) {
    this.quantities.controls[index].value.material = item.nombre
}
 

а вот моя группа форм и создание моего массива форм

 kanbanForm = this.formBuilder.group({
    kanban_nombre: ['', Validators.required],
    ubicacion: ['', Validators.required],
    ruta_guid: ['', Validators.required],
    kanban_guid: ['', Validators.required],
    material_guid: this.formBuilder.array([]),
    active: ['Y'],
})

getNewId() {
    this.currentStepId  = 1;
    return this.currentStepId;
}

get newQuantity(): FormGroup {
    return this.formBuilder.group({
        id: [this.getNewId()],
        material: [''],
        minimo: ['', Validators.required],
        maximo: ['', Validators.required],
    })
}

get quantities() : FormArray {
    return this.kanbanForm.get("material_guid") as FormArray
}

addQuantity() {
    this.quantities.push(this.newQuantity);
    console.log(this.quantities.controls)
}
 

Я не знаю, в чем дело, надеюсь, кто-нибудь сможет мне помочь

Комментарии:

1. не используйте (выберите) событие для изменения значения FormControl, я полагаю, вы можете использовать formControlName="material"

Ответ №1:

Я использовал этот пример. Это работает.

https://stackblitz.com/edit/angular-ng-autocomplete

Комментарии:

1. Я видел этот пример раньше, но он не отвечает на мой вопрос/проблему, потому что я знаю, как узнать, когда я выбираю опцию, но я хочу знать, как добавить в мое поле индекса, потому что в этом у меня есть несколько ошибок

2. Где я могу проверить вашу проблему? Это на стекблитце?