Ich erhalte diesen Fehler von Angular 2
core.umd.js: 5995 AUSNAHME: Nicht erfasst (versprochen): Fehler: Fehler in app / model_exposure_currencies / model_exposure_currencies.component.html: 57: 18 verursacht durch: Wenn ngModel in einem Formular-Tag verwendet wird, muss entweder das Namensattribut sein set oder das Formularsteuerelement muss in ngModelOptions als 'Standalone' definiert sein.
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>
So verwende ich das Formular-Tag:
<form #f="ngForm" (ngSubmit)="onSubmit()">
angular
angular-forms
Tampa
quelle
quelle
Antworten:
Wenn ngForm verwendet wird, werden alle Eingabefelder , die hat
[(ngModel)]=""
ein Attribut muss Namen mit einem Wert.quelle
Da jeder Entwickler die Gewohnheit hat, nicht den vollständigen Fehler zu lesen, lesen Sie einfach die erste Zeile und suchen Sie nach einer Antwort von jemand anderem :) :) Ich bin auch einer von ihnen, deshalb bin ich hier:
Lesen Sie den Fehler und sagen Sie deutlich:
Was brauchen wir mehr, um diesen Fehler zu verstehen?
Verwenden Sie eine Option, alles funktioniert reibungslos.
quelle
[ngModelOptions]="{standalone: true}
: stackoverflow.com/a/38368261/3135317 . In meinem Fall wurde das gefürchtete "ngModel" in einem Formular-Tag verwendet. Entweder muss das name-Attribut ... "ein Fehler sein, wenn ich ein" * ngFor "für ein verschachteltes Array hatte. Die Modellbindung war in Ordnung, die Vorlage barfed. „Beispiel 1“ KANN NICHT gearbeitet haben; "Beispiel 2" war perfekt.Beide Attribute werden benötigt und überprüfen Sie erneut, ob alle Formularelemente das Attribut "Name" haben. Wenn Sie das Formular zum Senden von Formularen verwenden, verwenden Sie andernfalls einfach das div-Tag anstelle des Formularelements.
quelle
In meinem Fall passierte der Fehler , weil unten in HTML - Markup eine weitere Zeile ohne existierte Name - Attribut.
Der Browser meldet jedoch weiterhin, dass in der ersten Zeile der Fehler aufgetreten ist. Und es ist schwierig, die Fehlerquelle zu entdecken, wenn Sie andere Elemente zwischen diesen beiden haben.
quelle
Wenn Sie sich die Konsole genau ansehen, erhalten Sie zwei Beispiele. Implementieren Sie eines dieser Beispiele.
oder
<input [(ngModel)]="person.firstName" name="first">
quelle
Mir ist aufgefallen, dass das Chrome-Entwicklertool manchmal nur das erste Element in rotem Rot unterstreicht, selbst wenn es korrekt mit einem Namen eingerichtet ist. Das warf mich für eine Weile ab.
Man muss sicher sein , einen hinzuzufügen Namen zu jedem Elemente auf dem Formular , das ngModel enthält , unabhängig von denen ein verschnörkelten unterstrichen.
quelle
Es ist ziemlich einfach für eine Lösung.
Für mich hatten wir mehr als eine Eingabe im Formular. Wir müssen die Eingabe / Zeile, die den Fehler verursacht, isolieren und einfach das
name
Attribut hinzufügen . Das hat das Problem für mich behoben:Vor:
Nachher: Ich habe gerade das
name
Attribut fürselect
und hinzugefügtcheckbox
und das Problem wurde behoben. Wie folgt:Wie Sie sehen, wurde das
name
Attribut hinzugefügt . Es ist nicht erforderlich, dass Sie IhrenngModel
Namen angeben . Nur die Angabe desname
Attributs behebt das Problem.quelle
Sie müssen {NgForm} aus @ angle / forms in Ihre page.ts importieren.
Code HTML:
Implementieren Sie in Ihren Page.ts Ihre Funktion zum Bearbeiten von Formulardaten:
quelle
Versuche dies...
quelle
Für alle, die nicht mit der Fehlermeldung selbst in Panik geraten, sondern nur nach der Erklärung suchen, warum das Beispiel von hier nicht funktioniert (dh eine dynamische Filterung findet nicht statt, wenn der Text in das Eingabefeld eingegeben wird): Es funktioniert nicht bis Sie den Parameter name in das Eingabefeld einfügen. Nichts deutet auf die Erklärung hin, warum Pipe nicht funktioniert, aber die Fehlermeldung verweist auf dieses Thema. Wenn Sie es gemäß der akzeptierten Antwort korrigieren, funktioniert der dynamische Filter.
quelle
Sie haben die von Ihnen verwendete Version nicht erwähnt, aber wenn Sie rc5 oder rc6 verwenden, ist dieser "alte" Formstil veraltet. Hier finden Sie Anleitungen zu den "neuen" Formulartechniken: https://angular.io/docs/ts/latest/guide/forms.html
quelle
Um die Informationen in dem gewünschten Formular anzeigen zu können, müssen Sie diese spezifischen Eingaben von Interessennamen angeben. Ich würde empfehlen, dass Sie haben:
quelle
Für mich war die Lösung sehr einfach. Ich habe das
<form>
Tag in a geändert<div>
und der Fehler verschwindet.quelle
Dies sind die drei Dinge, die benötigt werden, um ngModel in einer formGroup-Direktive zu verwenden.
Beachten Sie, dass der gleiche Name verwendet werden sollte.
quelle