Otrzymuję ten błąd z Angulara 2
core.umd.js: 5995 WYJĄTEK: Nieprzechwycony (w obietnicy): Błąd: Błąd w app / model_exposure_currencies / model_exposure_currencies.component.html: 57: 18 spowodowany przez: Jeśli ngModel jest używany w tagu formularza, albo atrybut name musi być zestaw lub formant formularza musi być zdefiniowany jako „samodzielny” w 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>
Oto jak używam tagu formularza:
<form #f="ngForm" (ngSubmit)="onSubmit()">
angular
angular-forms
Tampa
źródło
źródło
Odpowiedzi:
Jeśli używany jest ngForm, wszystkie pola wejściowe, które mają,
[(ngModel)]=""
muszą mieć nazwę atrybutu z wartością.źródło
Ponieważ każdy programista ma wspólny nawyk, aby nie czytać pełnego błędu, po prostu przeczytaj pierwszą linię i zacznij szukać odpowiedzi od kogoś innego :) :) Jestem również jednym z nich, dlatego jestem tutaj:
Przeczytaj błąd, wyraźnie mówiąc:
Czego więcej potrzebujemy, aby zrozumieć ten błąd?
Użyj dowolnej opcji, wszystko będzie działać płynnie.
źródło
[ngModelOptions]="{standalone: true}
: stackoverflow.com/a/38368261/3135317 . W moim przypadku mam przerażające, że `ngModel jest używany w znaczniku formularza, albo atrybut name musi ...` błąd, gdy miałem `* ngFor * dla zagnieżdżonej tablicy. Wiązanie modelu było w porządku, szablon wygięty. „Przykład 1” NIE MOGŁO działać; „Przykład 2” był idealny.Oba atrybuty są potrzebne, a także ponownie sprawdź, czy wszystkie elementy formularza mają atrybut „nazwa”. jeśli używasz formularza przesłania formularza, w innym przypadku po prostu użyj tagu div zamiast elementu formularza.
źródło
W moim przypadku wystąpił błąd, ponieważ poniżej w znacznikach HTML istniała jeszcze jedna linia bez atrybutu name .
Ale przeglądarka nadal zgłasza błąd w pierwszym wierszu. I trudno jest znaleźć źródło błędu, jeśli między tymi dwoma elementami są inne elementy.
źródło
Gdy wyraźnie spojrzysz na konsolę, podam dwa przykłady. Zaimplementuj dowolny z nich.
lub
<input [(ngModel)]="person.firstName" name="first">
źródło
Zauważyłem, że narzędzie dla programistów Chrome czasami tylko podkreśla pierwszy element na czerwono, nawet jeśli jest poprawnie skonfigurowane z nazwą. To mnie na chwilę rzuciło.
Należy dodać nazwę do każdego elementu w formularzu zawierającym ngModel, niezależnie od tego, który z nich jest lekko podkreślony.
źródło
Naprawdę łatwo to naprawić.
Dla mnie mieliśmy więcej niż jeden wkład w formularzu. Musimy odizolować wejście / linię powodującą błąd i po prostu dodać
name
atrybut. To rozwiązało problem:Przed:
Po: Ja po prostu dodaje
name
atrybut dlaselect
acheckbox
i usunąć problem. Następująco:Jak widać dodano
name
atrybut. Nie trzeba podawać tego samegongModel
imienia i nazwiska. Podaniename
atrybutu naprawi problem.źródło
Musisz zaimportować {NgForm} z @ angular / form na page.ts;
Kod HTML:
W pliku Page.ts zaimplementuj funkcję, aby manipulować danymi formularza:
źródło
Spróbuj tego...
źródło
Dla każdego, kto nie należy wpadać w panikę z samym komunikatem o błędzie, ale tylko googlowania dla wyjaśnienia dlaczego przykład ze tutaj nie działa (czyli dynamiczne filtrowanie nie występuje, gdy tekst jest wpisany w polu wejściowym): to nie zadziała dopóki nie dodasz parametru name w polu wejściowym. Nic nie wskazuje na wyjaśnienie, dlaczego potok nie działa, ale komunikat o błędzie wskazuje ten temat i poprawienie go zgodnie z przyjętą odpowiedzią powoduje, że filtr dynamiczny działa.
źródło
Nie wspomniałeś o używanej wersji, ale jeśli używasz rc5 lub rc6, ten „stary” styl formy został uznany za przestarzały. Spójrz na to, aby uzyskać wskazówki na temat technik „nowych” formularzy: https://angular.io/docs/ts/latest/guide/forms.html
źródło
Aby móc wyświetlić informacje w żądanym formularzu, musisz podać te konkretne dane wejściowe nazw zainteresowań. Polecam mieć:
źródło
Dla mnie rozwiązanie było bardzo proste. Zmieniłem
<form>
tag na a<div>
i błąd zniknął.źródło
Są to trzy rzeczy, których należy użyć ngModel w dyrektywie formGroup.
Pamiętaj, że należy użyć tej samej nazwy.
źródło