casella ita primo modulo reattivo con matrice

voti
0

Sto cercando di aggiungere la mia serie di oggetti per mappare la casella di controllo ita primo e vorrei ottenere i valori per le caselle di controllo selezionati.

Ho provato FormControlName ma è gettando indefinito dopo la presentazione.

sotto è il codice grezzo

data = [
    { type: dropdown
      text: 'drop',
      num: 1.23,
      options: [
      {
       value=1,
       text= 'drop1
      },{
       value=2,
       text= 'drop2
      }
      ]
    },
    { type: checkbox
      text: 'check',
      num: 1.23,
      options: [
      {
       value=1,
       text= 'check1
      },{
       value=2,
       text= 'check2
      }
      ]
    },
    { type: radio
      text: 'radio',
      num: 1.23,
      options: [
      {
       value=1,
       text= 'radio1
      },{
       value=2,
       text= 'radio2
      }
      ]
    },
  ];
<form [formGroup]=group>
 
  <div *ngFor=let d of data>
  <div *ngSwitchCase = checkbox>
    <p-checkbox *ngFor=let check of options  [value]=check.value [formControlName]=check.text></p-checkbox>
    </div>
    <div *ngSwitchCase = dropdown>
  <p-dropdown *ngFor=let drop of options [value]=drop.value [formControlName]=d.text> {{drop.text}}
   </p-dropdown>
  </div>
   <div *ngSwitchCase = radio>
    <p-radioButton  *ngFor=let radio of options[value]=radio.value [formControlName]=d.text></p-radioButton >
  </div>
  </div>
 </form>

Come posso ottenere il riferimento del mio controllo e valori uguali per discesa e caselle di controllo.

Come ottenere i valori per forme dinamiche?

È pubblicato 13/02/2020 alle 22:01
fonte dall'utente
In altre lingue...                            


1 risposte

voti
2

per reattiva dinamica forma prima cosa dobbiamo generare la base formGroup dei dati controllo di modulo

Metodo getFormGroup restituirà un oggetto formGroup dal ciclo sui dati e creare un modulo di controllo di base con nome del textvalore.

getFormGroup() {

    const formControls = this.data.reduce( (controls , f:FormControl)=>{

      controls[f.text] = this.formBuilder.control(null);
      return controls;

    },{});

    return this.formBuilder.group(formControls)
  }

dopo generiamo il modulo ora siamo in grado di rendere i controlli di modulo sul modello

<form [formGroup]="form">

    <div *ngFor="let d of data">

        <ng-container [ngSwitch]="d.type">

            <label for="">{{d.text}}</label>
            <div *ngSwitchCase="'checkbox'">
                <p-checkbox *ngFor="let check of d.options" [label]="check.label" [value]="check.value"
                    [formControlName]="d.text"></p-checkbox>
            </div>

            <div *ngSwitchCase="'dropdown'">
                <p-dropdown [options]="d.options" [formControlName]="d.text">
                </p-dropdown>
            </div>

            <div *ngSwitchCase="'radio'">

                <p-radioButton *ngFor="let radio of d.options" [name]="d.text" [label]="radio.label"
                    [value]="radio.value" [formControlName]="d.text">
                </p-radioButton>

            </div>

        </ng-container>
    </div>
</form>

demo 🚀

Risposto il 16/02/2020 a 23:21
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more