Recibo este error de Angular 2
core.umd.js: 5995 EXCEPCIÓN: No capturado (en promesa): Error: Error en app / model_exposure_currencies / model_exposure_currencies.component.html: 57: 18 causado por: Si ngModel se usa dentro de una etiqueta de formulario, el atributo de nombre debe ser set o el control de formulario debe definirse como 'independiente' en 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>
Así es como uso la etiqueta de formulario:
<form #f="ngForm" (ngSubmit)="onSubmit()">
angular
angular-forms
Tampa
fuente
fuente
Respuestas:
Si se usa ngForm, todos los campos de entrada que tengan
[(ngModel)]=""
deben tener un nombre de atributo con un valor.fuente
Como cada desarrollador tiene un hábito común, no leer el error completo, solo lea la primera línea y comience a buscar la respuesta de otra persona :) :) También soy uno de ellos, por eso estoy aquí:
Lea el error, diciendo claramente:
¿Qué más necesitamos para entender este error?
Use cualquier opción, todo funcionará sin problemas.
fuente
[ngModelOptions]="{standalone: true}
: stackoverflow.com/a/38368261/3135317 . En mi caso, obtuve el temido `ngModel se usa dentro de una etiqueta de formulario, ya sea el atributo de nombre debe ...` error cuando tuve un `* ngFor * para una matriz anidada. El modelo de encuadernación estaba bien, la plantilla tenía púas. "Ejemplo 1" NO PODRÍA haber funcionado; El "Ejemplo 2" fue perfecto.Ambos atributos son necesarios y también vuelva a verificar que todos los elementos del formulario tengan el atributo "nombre". si está utilizando el concepto de envío de formulario, de lo contrario, simplemente use la etiqueta div en lugar del elemento de formulario.
fuente
En mi caso, el error ocurrió porque a continuación, en el marcado html, existía una línea más sin el atributo de nombre .
Pero el navegador aún informa que la primera fila tiene el error. Y es difícil descubrir la fuente del error si tiene otros elementos entre estos dos.
fuente
Cuando miras claramente la consola. Te dará dos ejemplos. Implementa cualquiera de estos.
o
<input [(ngModel)]="person.firstName" name="first">
fuente
Noté que la herramienta de desarrollador de Chrome a veces solo subraya el primer elemento en rojo swiggly incluso si está configurado correctamente con un nombre. Esto me tiró por un tiempo.
Uno debe asegurarse de agregar un nombre a cada elemento en el formulario que contenga ngModel, independientemente de cuál esté subrayada onduladamente.
fuente
Es bastante fácil solucionarlo.
Para mí, tuvimos más de una entrada en el formulario. Necesitamos aislar la entrada / línea que causa el error y simplemente agregar el
name
atributo. Eso solucionó el problema para mí:Antes de:
Después: acabo de agregar el
name
atributo paraselect
ycheckbox
y eso solucionó el problema. Como sigue:Como ves agregó el
name
atributo. No es necesario que se le dé igual que sungModel
nombre. Solo proporcionar elname
atributo solucionará el problema.fuente
Necesita importar {NgForm} desde @ angular / forms en su page.ts;
Código HTML:
En sus Page.ts, implemente su función para manipular los datos del formulario:
fuente
Prueba esto...
fuente
Para todos los que no entran en pánico con el mensaje de error en sí, pero solo buscan en Google la explicación de por qué el ejemplo de aquí no funciona (es decir, el filtrado dinámico no ocurre cuando el texto se escribe en el campo de entrada): no funcionará hasta que agregue el parámetro de nombre en el campo de entrada. Nada apunta a la explicación de por qué la tubería no funciona, pero el mensaje de error apunta a este tema y solucionarlo de acuerdo con la respuesta aceptada hace que el filtro dinámico funcione.
fuente
No mencionó la versión que está utilizando, pero si está utilizando rc5 o rc6, ese estilo de formulario "antiguo" ha quedado en desuso. Eche un vistazo a esto para obtener orientación sobre las "nuevas" técnicas de formularios: https://angular.io/docs/ts/latest/guide/forms.html
fuente
Para poder mostrar la información en la forma que desea, debe dar esos aportes específicos de nombres de interés. Te recomiendo que tengas:
fuente
Para mí, la solución fue muy simple. Cambié la
<form>
etiqueta a a<div>
y el error desaparece.fuente
Esas son las tres cosas que necesita para usar ngModel dentro de una directiva formGroup.
Tenga en cuenta que se debe usar el mismo nombre.
fuente