J'essaye d'utiliser l' disabled
attribut d'un formControl
. Quand je le mets dans le modèle, cela fonctionne:
<md-input formControlName="id" placeholder="ID" [disabled]="true"></md-input>
Mais le navigateur m'alerte:
Il semble que vous utilisez l'attribut désactivé avec une directive de formulaire réactive. Si vous définissez disabled sur true lorsque vous configurez ce contrôle dans votre classe de composant, l'attribut désactivé sera en fait défini dans le DOM pour vous. Nous vous recommandons d'utiliser cette approche pour éviter les erreurs «modifié après vérification».
Example: form = new FormGroup({ first: new FormControl({value: 'Nancy', disabled: true}, Validators.required), last: new FormControl('Drew', Validators.required) });
Je l'ai donc mis dans le FormControl
et supprimé du modèle:
constructor(private itemsService: ItemsService) {
this._items = [];
this.myForm = new FormGroup({
id: new FormControl({value: '', disabled: true}, Validators.required),
title: new FormControl(),
description: new FormControl()
});
this.id = this.myForm.controls['id'];
this.title = this.myForm.controls['title'];
this.description = this.myForm.controls['description'];
this.id.patchValue(this._items.length);
}
Mais cela ne fonctionne pas (cela ne désactive pas le input
). Quel est le problème?
angular
typescript
FacundoGFlores
la source
la source
this.myForm.controls['id'].disable()
quelque part dans le constructeur. J'ai fait une bibliothèque qui facilite le travail avec les formulaires dynamiques: github.com/mat3e/dorfRéponses:
J'utilise
[attr.disabled]
parce que j'aime toujours ce modèle piloté par le programme enable () / disable () car il est supérieur à l'OMI.Changement
à
Si vous êtes sur un nouveau matériel, passez
md-input
àmat-input
.la source
[disabled]
et l'avertissement dans la console fonctionne. J'utilise Angular 4.1.3[attr.disabled]
cela ne déclenche tout simplement pas l'avertissement qui[disabled]
montreVous pouvez activer / désactiver un contrôle de formulaire à l'aide des méthodes suivantes:
control.disable () ou control.enable ()
Si cela n'a pas fonctionné, vous pouvez utiliser une directive
Alors tu pourrais l'utiliser comme ça
Cette technique est décrite ici:
https://netbasal.com/disabling-form-controls-when-working-with-reactive-forms-in-angular-549dd7b42110
J'espère que ça aide
la source
NgControl (`No provider for NgControl`)
J'ai trouvé que je devais avoir une valeur par défaut, même s'il s'agissait d'une chaîne vide pour que cela fonctionne. Donc ça:
... devait devenir ceci:
Voir ma question (que je ne crois pas être un doublon): Passer 'disabled' dans l'objet d'état de formulaire au constructeur FormControl ne fonctionne pas
la source
Dans mon cas avec Angular 8 . Je voulais activer / désactiver l'entrée en fonction de la condition.
[attr.disabled]
n'a pas fonctionné pour moi, voici ma solution.J'ai supprimé
[attr.disabled]
du HTML et dans la fonction du composant effectué cette vérification:la source
Initialisation (composant) avec:
Puis au lieu d'utiliser (template):
Supprimez simplement l'attribut désactivé:
Et lorsque vous avez des éléments à afficher, lancez (dans le composant):
this.selector.enable();
la source
Uniquement pour ceux qui utilisent des formulaires réactifs: pour les éléments HTML natifs, [attr.disabled] fonctionnera mais pour les éléments matériels, nous devons désactiver dynamiquement l'élément.
Sinon, il s'affichera dans le message d'avertissement de la console.
la source
J'ai essayé ceux-ci en angulaire 7. Cela a fonctionné avec succès.
la source
Pour un formcontrol fait désactiver
Ou méthode de réglage initial.
la source
Utilisez [attr.disabled] à la place [disabled], dans mon cas cela fonctionne bien
la source
ajouter disable = "true" au champ html Exemple: désactiver
la source
La beauté des formulaires réactifs est que vous pouvez détecter très facilement les changements de valeurs de tout élément d'entrée et en même temps, vous pouvez modifier leurs valeurs / leur statut. Voici donc une autre façon de résoudre votre problème en utilisant
enable
disable
.Voici la solution complète sur stackblitz .
la source
la désactivation des champs de formulaire mat est exemptée si vous utilisez la validation de formulaire, alors assurez-vous que votre champ de formulaire n'a pas de validations comme (validators.required), cela a fonctionné pour moi. par ex:
editUserPhone: nouveau FormControl ({value: '', disabled: true})
cela rend les numéros de téléphone de l'utilisateur non modifiables.
la source
C'était ma solution:
la source
dans Angular-9 si vous souhaitez désactiver / activer sur le bouton cliquez ici est une solution simple si vous utilisez des formulaires réactifs.
définir une fonction dans le fichier component.ts
Appelez-le depuis votre component.html
par exemple
la source
Lorsque vous créez un nouveau contrôle de formulaire, utilisez suivant:
Si vous voulez changer d'activité, utilisez suivant:
ou
la source
ajoutez l'attribut de nom à votre entrée md. si cela ne résout pas le problème, veuillez publier votre modèle
la source
Meilleure façon de faire cela.
la source