Je reçois cette erreur d'Angular 2
core.umd.js: 5995 EXCEPTION: Uncaught (en promesse): Erreur: Erreur dans app / model_exposure_currencies / model_exposure_currencies.component.html: 57: 18 provoqué par: Si ngModel est utilisé dans une balise de formulaire, soit l'attribut name doit être set ou le contrôle de formulaire doit être défini comme «autonome» dans ngModelOptions.
Example 1: <input [(ngModel)]="person.firstName" name="first">
Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">
<td *ngFor="let lag of ce.lags">
<div class="form-group1">
<input name="name" [(ngModel)]="lag.name" [ngModelOptions]="{standalone: true}" class="form-control" pattern="[0-9]*(\.[0-9]+)?" required>
</div>
</td>
Voici comment j'utilise la balise de formulaire:
<form #f="ngForm" (ngSubmit)="onSubmit()">
angular
angular-forms
Tampa
la source
la source
Réponses:
Si ngForm est utilisé, tous les champs d'entrée qui ont
[(ngModel)]=""
doivent avoir un nom d' attribut avec une valeur.la source
Comme chaque développeur a une habitude commune, de ne pas lire l'erreur complète, il suffit de lire la première ligne et de commencer à chercher la réponse de quelqu'un d'autre :) :) Je suis aussi l'un d'eux, c'est pourquoi je suis ici:
Lisez l'erreur en disant clairement:
Que nous faut-il de plus pour comprendre cette erreur?
Utilisez n'importe quelle option, tout fonctionnera en douceur.
la source
[ngModelOptions]="{standalone: true}
: stackoverflow.com/a/38368261/3135317 . Dans mon cas, j'ai eu le redouté `ngModel est utilisé dans une balise de formulaire, soit l'attribut name must ...` erreur quand j'avais un `* ngFor * pour un tableau imbriqué. La reliure du modèle était fine, le gabarit barfait. "Exemple 1" NE POURRAIT PAS avoir fonctionné; "Exemple 2" était parfait.Dans mon cas, l'erreur s'est produite car ci-dessous dans le balisage html, une ligne de plus existait sans l' attribut name .
Mais le navigateur signale toujours que la première ligne contient l'erreur. Et il est difficile de découvrir la source de l'erreur si vous avez d'autres éléments entre ces deux.
la source
Les deux attributs sont nécessaires et revérifiez également que tous les éléments du formulaire ont l'attribut "nom". si vous utilisez le concept de soumission de formulaire, sinon utilisez simplement la balise div au lieu de l'élément de formulaire.
la source
Lorsque vous regardez clairement la console, cela vous donnera deux exemples.
ou
<input [(ngModel)]="person.firstName" name="first">
la source
J'ai remarqué que l'outil de développement Chrome ne souligne parfois que le premier élément en rouge ondulé même s'il est correctement configuré avec un nom. Cela m'a bouleversé pendant un certain temps.
Il faut être sûr d'ajouter un nom à chaque élément du formulaire qui contient ngModel, quel que soit celui qui est souligné de manière ondulée.
la source
C'est assez facile pour un correctif.
Pour moi, nous avions plus d'une entrée dans le formulaire. Nous devons isoler l'entrée / la ligne provoquant l'erreur et simplement ajouter l'
name
attribut. Cela a résolu le problème pour moi:Avant:
Après: je viens d'ajouter l'
name
attribut pourselect
etcheckbox
et cela a résolu le problème. Comme suit:Comme vous le voyez, l'ajout de l'
name
attribut. Il n'est pas nécessaire de donner votrengModel
nom. Le simple fait de fournir l'name
attribut résoudra le problème.la source
Vous devez importer {NgForm} depuis @ angular / forms dans votre page.ts;
Code HTML:
Dans votre Page.ts, implémentez votre fonction pour manipuler les données du formulaire:
la source
Essaye ça...
la source
Pour tous ceux qui ne paniquent pas avec le message d'erreur lui-même, mais qui cherchent simplement à expliquer pourquoi l'exemple d' ici ne fonctionne pas (c'est-à-dire que le filtrage dynamique ne se produit pas lorsque le texte est tapé dans le champ de saisie): cela ne fonctionnera pas jusqu'à ce que vous ajoutiez le paramètre de nom dans le champ de saisie. Rien ne permet d'expliquer pourquoi le canal ne fonctionne pas, mais le message d'erreur pointe vers cette rubrique et le corriger en fonction de la réponse acceptée fait fonctionner le filtre dynamique.
la source
Vous n'avez pas mentionné la version que vous utilisez, mais si vous utilisez rc5 ou rc6, cet "ancien" style de formulaire est obsolète. Jetez un œil à cela pour obtenir des conseils sur les "nouvelles" techniques de formulaires: https://angular.io/docs/ts/latest/guide/forms.html
la source
Afin de pouvoir afficher les informations sous la forme que vous souhaitez, vous devez donner ces entrées spécifiques de noms d'intérêt. Je vous recommande d'avoir:
la source
Pour moi, la solution était très simple. J'ai changé la
<form>
balise en a<div>
et l'erreur disparaît.la source
Ce sont les trois choses nécessaires pour utiliser ngModel dans une directive formGroup.
Notez que le même nom doit être utilisé.
la source