Angulaire 6 comment faire de la saisie de tous n'est Pas modifiable élément à l'intérieur d'un formulaire
Est-il un moyen de les désactiver et de faire tous les champs non modifiable
(input /mat-select /textfield /option/input/mat-checkbox etc)
à l'intérieur d'une Forme
en disant seulement le div parent nom Angulaire /Angulaires-le matériel ?
(ne peut pas les modifier)
@Component({
templateUrl: './leaseholder.component.html'
})
export class LeaseholderComponent implements OnInit, IFormDirtyWarningComponent {
leaseholderForm: FormGroup;
constructor(private router: Router, private formBuilder: FormBuilder) {
this.createLeaseholderForm();
}
createLeaseholderForm() {
this.leaseholderForm = this.formBuilder.group({
civility: [this.identityModel.civility],
firstName: [this.identityModel.firstName, Validators.compose([Validators.pattern("[^\\d]+")])],
lastName: [this.identityModel.lastName, Validators.compose([Validators.pattern("[^\\d]+")])],
birthName: [this.identityModel.birthName, Validators.compose([Validators.pattern("[^\\d]+")])],
birthDate: [this.identityModel.birthDate],
birthPlace: [this.identityModel.birthPlace, Validators.compose([Validators.pattern("[^\\d]+")])],
nationality: ['FR', this.identityModel.nationality],
endOfStay: [this.identityModel.endOfStay]
});
}
<form [formGroup]="leaseholderForm" (ngSubmit)="onSubmit()">
<div class="mat-radio-group-inverted">
<mat-radio-group formControlName="civility">
<mat-radio-button color="primary" value="MR">M.</mat-radio-button>
<mat-radio-button color="primary" value="MME">MME.</mat-radio-button>
</mat-radio-group>
</div>
<mat-form-field>
<input matInput upperCaseInput placeholder="Nom d'usage" formControlName="lastName">
</mat-form-field>
...........................
.......... example
</form>
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez la forme réactive vous pouvez le faire par programme comme ceci (une par une approche):
Par exemple:
this.formGroupName.controls['lastName'].disable()
Pour désactiver tous à la fois:
Dans votre cas:
this.leaseholderForm.disable()
Et pour le rallumer n':
this.leaseholderForm.enable()
Ce que vous pouvez faire est de créer une fonction comme celle-ci et de l'appeler après avoir appelé
createLeaseholderForm()
:pour plus d'informations, lisez cette.
Handicapés et non modifiable ne sont pas nécessairement la même chose. Une désactivé entrée est bien sûr pas modifiable, mais il a une apparence distincte - grisées et regarde "personnes handicapées". Une entrée en lecture seule est le même qu'une entrée normale, mais n'est pas modifiable. Donc, vous avez à vous demander si vous voulez que vos contrôles effectivement désactivé ou tout simplement en lecture seule. Il semble que vous voulez juste en lecture seule. Pour ce faire, vous avez juste besoin d'utiliser le
readonly
propriété de<input>
et le lier à une variable dans votre contrôleur. Par exemple:Noter que le
editable
propriété n'a pas besoin d'être un@Input
, mais qui pourrait être utile si vous utilisez le formulaire sous la forme d'un composant réutilisable et la nécessité de faire la editable/en lecture seule décision du DOM niveau.Pour d'autres composants comme des boutons radio, où aucun
readonly
propriété est disponible, vous devriez probablement repenser la mise en page. Il pourrait faire plus de sens d'utiliser un autre composant pour afficher l'option radio en mode lecture seule, plutôt que la liste complète des options. Par exemple, l'utilisation d'une étiquette et la valeur de la paire:Depuis désactivé attribut ne fonctionne pas sur certains composants, ce que j'ai fait est que j'ai l' pointeur-events:none sur le css pour couvrir tous les composants à l'intérieur de la div contenu.
Voici mon code CSS:
Voici mon code HTML:
Et sur mon TS:
Créer un FormGroup comme expliqué ici:
https://angular.io/guide/reactive-forms#add-a-formgroup
Ensuite, prenez le
formGroup
instance par programme et appel.disable()
sur elle, comme ceci:this.leaseholderForm.disable()
Utilisation
disable
attribut dans le modèle html.control = new FomrControl({'value', disabled: true}, [validators]);