J'essaie d'utiliser le disabled
de l'attribut formControl
. Lorsque je le mets dans le modèle, il fonctionne :
<md-input formControlName="id" placeholder="ID" [disabled]="true"></md-input>
Mais le navigateur me prévient :
Il semble que vous utilisiez l'attribut disabled avec une directive de formulaire réactive. Si vous mettez disabled à true lorsque vous configurez ce contrôle dans votre classe de composant, l'attribut disabled sera réellement défini dans le DOM pour vous. pour vous. Nous vous recommandons d'utiliser cette approche pour éviter les erreurs "changed after checked".
Example: form = new FormGroup({ first: new FormControl({value: 'Nancy', disabled: true}, Validators.required), last: new FormControl('Drew', Validators.required) });
Donc je l'ai 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 (il ne s'agit pas de désactiver la fonction input
). Quel est le problème ?
1 votes
Cela semble fonctionner parfaitement avec la version actuelle d'Angular 2 : plnkr.co/edit/CQQtkYC9D5EoH0sAlNCV?p=preview
0 votes
J'utilise la dernière version du projet angular cli pour les tests.
2 votes
Vous utilisez @angular/material, donc, selon leurs problèmes github : github.com/angular/material2/issues/1171 Il n'est pas encore pris en charge et il s'agit d'une version alpha, vous ne pouvez donc pas vous attendre à ce que toutes les fonctionnalités soient disponibles.
0 votes
Oui, c'était le problème
7 votes
Vous pouvez essayer de mettre
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/dorf0 votes
Le but de l'utilisation d'un formulaire réactif est de minimiser le code dans le modèle et les fonctionnalités dans le composant (y compris les validations de valeurs de commutation désactivées, etc...) Si vous voulez utiliser la désactivation et la validation dans le modèle, nous devrions tous envisager d'utiliser l'approche du formulaire piloté par le modèle.