angular - Reactiv skjema patchValue() i For-løkke


Følgende eksempelkode:

model={name: "D100"
value: "Dying"};

   for (let key in model) {
            if(this.divisionForm.controls.hasOwnProperty(key)) {
                let value = divisionModel[key];
                this.form.patchValue({
                    key: value
                });
            }
        }
  • Finnes det noen måte å oppnå løkkingen av objektet og sette inn nøkkel-verdi-par i Angular reactive forms patchValue()
  • Jeg kan ikke ha verdier som settes i skjemaet. Jeg kan oppnå dette ved å manuelt legge til setValue() og bruke destrukturering for å hente objektene og sette dem, noe som fører til veldig lang kode i større skjemaer.

Jeg har strukturert i dette i lang tid, vennligst hjelp meg. Takk på forhånd.

Svar #1

Bare spred verdien på skjemaet ditt og overskriv egenskapene du vil endre.

Som en parentes, patchValue skal beholde verdiene til nøklene du ikke oppgir, f.eks. å gi en enkelt nøkkel vil beholde alle andre nøkler på deres faktiske verdi.

Her er en stackblitz: https://stackblitz.com/edit/angular-xlxcic?file=src%2Fapp%2Fapp.component.ts

  constructor() {
    const form = new FormGroup({
      name: new FormControl(''),
      surname: new FormControl('')
    });

    form.patchValue({
      ...form.value,
      name: 'name of the user'
    });

    form.patchValue({
      surname: 'surname of the user, with name kept'
    });

    console.log(form.value);
  }

Svar #2

prøv dette, ingen grunn til å bruke løkke

this.form.patchValue(model)

For informasjon besøk, https://dev.to/crazedvic/using-patchvalue-on-formarrays-in-angular-7-2c8c

Relaterte artikler