typescript - Hvordan deaktivere alle feltene i et malbasert skjema i Angular
Jeg laget et malbasert skjema i Angular 5
Jeg vil deaktivere hele skjemaet først, og jeg vil også at skjemaet skal aktiveres når en knapp blir klikket, derfor la jeg til en disabled-egenskap i form-taggen og satte verdien til false som vist nedenfor, (dette fungerte imidlertid ikke):
<form #formName = "ngForm" [disabled]="true">
</form>
Siden den ovennevnte deaktiverte egenskapen ikke fungerte, endret jeg den deaktiverte egenskapen til
[attr.disabled] = true
Dette fungerte heller ikke
Nå som jeg har referansen til formelementet som er #formName, brukte jeg den i TS-filen og prøvde å endre verdien til disabled-egenskapen inne i referanseobjektet
Her er hva jeg har gjort:
@ViewChild('formName') formName;
this.formName.disabled = true;
som heller ikke fungerte, og jeg fikk en feilmelding som sa at disabled ikke kan endres siden det kun er en getter
Hvordan bør jeg deaktivere hele skjemaet som standard i Angular på mal-drevne skjemaer?
Takk på forhånd :)
Svar #1
Som nevnt i kommentaren kan du pakke inn skjemaet i en fieldset-tag og oppnå dette som vist nedenfor:
<form>
<fieldset [disabled]="fieldsetDisabled">
<!-- YOUR FIELDS HERE -->
</fieldset>
</form>
Og du kan håndtere tilstanden i kontrolleren din ved å veksle en lokal variabel mellom deaktivert/aktivert-tilstandene slik:
this.fieldsetDisabled = true; // Disables the fieldset
this.fieldsetDisabled = false; // Enables the fieldset
