Angulaire 2: Désactiver le changement d'entrée ne fonctionne pas
Jusqu'à la "finale" 2.0 Angulaire j'ai fait ceci:
<input type="text" formControlName="name" [disabled]="!showName">
Dynamiquement désactiver/activer les entrées d'un formulaire.
Après la mise à niveau à partir de Rc7 à 2,0 j'obtiens ce message d'avertissement dans la fenêtre de la console:
On dirait que vous êtes à l'aide de l'désactivé attribut avec une forme réactive de la directive. Si vous définissez disabled à true
lorsque vous configurez ce contrôle dans votre classe de composant, les personnes handicapées de l'attribut sera effectivement mis dans les DOM pour
vous. Nous vous recommandons d'utiliser cette approche pour éviter de "a changé après avoir coché la case" erreurs.
J'ai changé mon code de suivre ces instructions comme ceci:
this._userGroupUsersForm = this._formBuilder.group({
'users': [{'', disabled: this.showName}, Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(50), Validators.pattern("^[a-zA-ZåäöÅÄÖ 0-9_-]+$")])]
});
Et qui fonctionne très bien pour le chargement initial de la page, mais je ne peux plus basculer la situation comme ceci:
toggleName() : void { this.showName = !this.showName; }
Comment puis-je résoudre ce problème?
Note: Mon "vieux" façon de le faire (avec le réglage [désactivé]) ne fonctionne plus non plus.
Vous devez vous connecter pour publier un commentaire.
Cela devrait fonctionner
<button type="submit" class="btn btn-primary" [disabled]="!_stdSearchForm.valid">
. Toutes les idées sur qui?this.form.controls
pour obtenir tous les contrôles (à un niveau) et d'appelerctrl.disabled()
pour chacun.Cette même question a me tirant de mes cheveux. Ma solution a été d'utiliser l'interpolation plutôt que d'un moyen de liaison à la mise à jour de la propriété. Dans votre cas, au lieu d'utiliser:
<input type="text" formControlName="name" [disabled]="!showName">
que vous pouvez faire:
<input type="text" formControlName="name" disabled="{{!showName}}">
Dès que je l'ai fait, j'ai pu dynamiquement désactiver /activer des éléments dans mes formulaires.
J'espère que cela aide!
Parser Error: Got interpolation ({{}}) where expression was expected
Vous pouvez essayer d'utiliser l'attribut lecture seule dans votre entrée.
désactivé >>> readonly
HTML:
De RC6 vous devez appeler le désactiver() la fonction RC6 Formes: désactivé attribut ne peut pas être défini de façon dynamique plus.
Si quelqu'un passe à travers ce et le a accepté de répondre (Günters) ne fonctionne pas, car elle n'est pas pour moi au premier abord. Il pourrait être que vous essayez de l'utiliser avec un composant personnalisé et n'ont pas mis en œuvre la méthode facultative
setDisabledState(isDisabled: boolean)
de laControlValueAccessor
interface.Vous devez utiliser:
Au lieu de:
J'espère que cela fonctionne.