typescript - Tilbakestill Angular reaktivt skjema unntatt et bestemt felt


med referanse (https://stackoverflow.com/questions/50197347/how-to-reset-only-specific-fields-of-form-in-angular-5), har jeg 20 felt i skjemaet. Hvis brukeren klikker på tilbakestillingsalternativet, trenger jeg å tilbakestille skjemaet unntatt 2 felt. Hvis jeg bruker this.form.reset(), betyr det at alt tilbakestilles. All hjelp er verdsatt

Svar #1

Se bare på onReset()-metoden. Denne koden vil tilbakestille alt unntatt name- og description-feltene

formGroup: FormGroup = /* init the formGroup... */

onReset() {
    this.formGroup.reset({
        name: this.formGroup.get('email').value, 
        description: this.formGroup.get('description').value
    });
}

Stackblitz-reproduksjon

Svar #2

Du kan iterere over kontrollene i en FormGroup, og hvis kontrollens navn matcher det i ekskluderingslisten din, tilbakestiller du det ikke:

const exclude: string[] = ['formControlName1', 'formControlName2'];

Object.keys(this.form.controls).forEach(key => {
   if (exclude.findIndex(q => q === key) === -1) {
       this.form.get(key).reset();
   }
});

Relaterte artikler