angular - Reactive Forms patchValue() i For-loop


Följande exempel kod:

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
                });
            }
        }
  • Finns det något sätt att uppnå objektloopning och infoga nyckel-värdepar i Angular reaktiva formulärs patchValue()
  • Jag kan inte ha värden för att sättas i formuläret, jag kan uppnå detta genom att manuellt lägga till setValue() och använda destrukturering för att få objekten och sätta dem, vilket leder till mycket lång kod i större formulär.

Jag har fastnat i detta länge, vänligen hjälp mig. Tack på förhand.

Svar #1

Sprid helt enkelt ditt formulärvärde och skriv över de egenskaper du vill ändra.

Som en parentes, patchValue är tänkt att behålla värdena för de nycklar du inte anger, t.ex. att ge en enda nyckel kommer att behålla alla andra nycklar till deras faktiska värde.

Här är 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

prova detta, inget behov av att använda loop

this.form.patchValue(model)

För information besök, https://dev.to/crazedvic/using-patchvalue-on-formarrays-in-angular-7-2c8c

Relaterade artiklar