LA SITUACIÓN:
¡Por favor ayuda! Estoy tratando de hacer lo que debería ser una forma muy simple en mi aplicación Angular2, pero no importa lo que nunca funcione.
VERSIÓN ANGULAR
Angular 2.0.0 Rc5
EL ERROR:
Can't bind to 'formGroup' since it isn't a known property of 'form'
EL CÓDIGO:
La vista:
<form [formGroup]="newTaskForm" (submit)="createNewTask()">
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" required>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
El controlador:
import { Component } from '@angular/core';
import { FormGroup, FormControl, Validators, FormBuilder } from '@angular/forms';
import {FormsModule,ReactiveFormsModule} from '@angular/forms';
import { Task } from './task';
@Component({
selector: 'task-add',
templateUrl: 'app/task-add.component.html'
})
export class TaskAddComponent {
newTaskForm: FormGroup;
constructor(fb: FormBuilder)
{
this.newTaskForm = fb.group({
name: ["", Validators.required]
});
}
createNewTask()
{
console.log(this.newTaskForm.value)
}
}
El ngModule:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { routing } from './app.routing';
import { AppComponent } from './app.component';
import { TaskService } from './task.service'
@NgModule({
imports: [
BrowserModule,
routing,
FormsModule
],
declarations: [ AppComponent ],
providers: [
TaskService
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
LA PREGUNTA:
¿Por qué recibo ese error?
¿Me estoy perdiendo de algo?
fuente
FormsModule
yReactiveFormsModule
. Editaré mi respuesta.ReactiveFormsModule
en la lista de proveedores y funcionó. Sin embargo, no estoy seguro si esta es la forma en que se supone que debes hacerlo.Angular 4 en combinación con módulos de características (si está utilizando, por ejemplo, un módulo compartido) requiere que también exporte el
ReactiveFormsModule
para trabajar.fuente
Ok, después de investigar un poco, encontré una solución para "No se puede vincular a 'formGroup' ya que no es una propiedad conocida de 'form'".
Para mi caso, he estado usando múltiples archivos de módulos, agregué ReactiveFormsModule en app.module.ts
Pero esto no funcionaba cuando uso una directiva [formGroup] de un componente agregado en otro módulo, por ejemplo, usando [formGroup] en author.component.ts que está suscrito en el archivo author.module.ts:
Pensé que si agregaba ReactiveFormsModule en app.module.ts, por defecto ReactiveFormsModule sería heredado por todos sus módulos secundarios como author.module en este caso ... (¡incorrecto!). Necesitaba importar ReactiveFormsModule en author.module.ts para que todas las directivas funcionen:
Por lo tanto, si está utilizando submódulos, asegúrese de importar ReactiveFormsModule en cada archivo de submódulo. Espero que esto ayude a cualquiera.
fuente
Encontré este error durante la prueba unitaria de un componente (solo durante la prueba, dentro de la aplicación funcionó normalmente). La solución es importar
ReactiveFormsModule
en.spec.ts
archivo:fuente
La respuesta sugerida no me funcionó con Angular 4. En cambio, tuve que usar otra forma de enlace de atributos con el
attr
prefijo:fuente
attr.
?ReactiveFormsModule
directamente en mi página.module.ts
. No el.page.ts
... una vez que hice eso, mi plantilla pudo identificar correctamente elformGroup
atributo, sin elattr.
prefijo.Si tiene que importar dos módulos, agregue así a continuación
fuente
Tenga en cuenta que si ha definido "Módulos de funciones", deberá importar en el Módulo de funciones, incluso si ya lo ha importado a
AppModule
. De la documentación angular:https://angular.io/docs/ts/latest/guide/ngmodule.html
fuente
El error dice que FormGroup no se reconoce en este módulo. Por lo tanto, debe importar estos módulos (a continuación) en cada módulo que use FormGroup
Luego agregue FormsModule y ReactiveFormsModule en la matriz de importaciones de su Módulo .
¿Puede estar pensando que ya lo he agregado en AppModule y que debería heredar de él? Pero no lo es. porque estos módulos están exportando directivas requeridas que están disponibles solo en la importación de módulos. Lea más aquí ... https://angular.io/guide/sharing-ngmodules .
Otros factores para estos errores pueden ser errores ortográficos como a continuación ...
[FormGroup] = "form" Capital F en lugar de f pequeña
[formsGroup] = "form" S extra después del formulario
fuente
Tuve el mismo problema con Angular 7. Solo importa lo siguiente en tu archivo app.module.ts.
Luego agregue FormsModule y ReactiveFormsModule a su matriz de importaciones.
fuente
Este problema se produce debido a la falta de importación de FormsModule, ReactiveFormsModule. También tuve el mismo problema. Mi caso fue diff. mientras trabajaba con módulos. Así que me perdí las importaciones anteriores en mis módulos principales, aunque lo había importado en módulos secundarios, no estaba funcionando.
Luego lo importé a mis módulos principales como se muestra a continuación, ¡y funcionó!
fuente
Para las personas que pasean por estos hilos sobre este error. En mi caso, tenía un módulo compartido donde solo exportaba FormsModule y ReactiveFormsModule y olvidé importarlo. Esto causó un extraño error de que los grupos de formularios no funcionaban en los subcomponentes. Espero que esto ayude a las personas a rascarse la cabeza.
fuente
Me encontré con este error al intentar hacer pruebas e2e y me estaba volviendo loco que no hubiera respuestas para esto.
SI ESTÁ HACIENDO PRUEBAS, busque su archivo * .specs.ts y agregue:
fuente
UNA PEQUEÑA NOTA: Tenga cuidado con los cargadores y minimice (Rails env.):
Después de ver este error y probar todas las soluciones, me di cuenta de que había un problema con mi cargador html.
He configurado mi entorno Rails para importar rutas HTML para mis componentes con éxito con este cargador (
config/loaders/html.js.
):Después de algunas horas de esfuerzos y un sinnúmero de importaciones ReactiveFormsModule vi que mi
formGroup
era minúsculas:formgroup
.Esto me llevó al cargador y al hecho de que redujo mi HTML en minimizar.
Después de cambiar las opciones, todo funcionó como debería, y pude volver a llorar nuevamente.
fuente
utilizando e importa REACTIVE_FORM_DIRECTIVES :
fuente
Si tiene este problema cuando desarrolla un componente, debe agregar estos dos módulos al módulo más cercano:
Y si está desarrollando una prueba para sus componentes, debe agregar este módulo a su archivo de prueba de esta manera:
fuente
Importe ReactiveFormsModule en el módulo correspondiente
fuente
Solución simple :
Paso 1: importar ReactiveFormModule
paso 2: agrega "ReactiveFormsModule" a la sección de importación
Paso 3: reinicia la aplicación y listo
Ejemplo:
fuente
Importe y registre ReactiveFormsModule en su app.module.ts.
Asegúrese de que su ortografía sea correcta en los archivos .ts y .html. xxx.ts
archivo xxx.html
Estaba por error escribió [FormGroup] insted de [formGroup]. Revisa tu ortografía correctamente en .html. No arroja error de tiempo de compilación Si algo anda mal en el archivo .html.
fuente
Nota : si está trabajando dentro del componente del módulo secundario, entonces solo tiene que importar ReactiveFormsModule en el módulo secundario en lugar del módulo raíz de la aplicación principal
fuente
No seas tonto como yo. Estaba obteniendo el mismo error que el anterior, NINGUNA de las opciones en este hilo funcionó. Luego me di cuenta de que capitalizaba 'F' en FormGroup. Doh!
En vez de:
[FormGroup]="form"
Hacer:
[formGroup]="form"
fuente
Si esto es solo un error mecanografiado pero todo en su formulario funciona, es posible que solo tenga que reiniciar su IDE
fuente
Tuve el mismo problema, asegúrese de que si usa submódulos (por ejemplo, no solo tiene app.component.module.ts, sino que tiene un componente separado como login.module.ts, que incluye la importación ReactiveFormsModule en este inicio de sesión .module.ts import, para que funcione. Ni siquiera tengo que importar ReactiveFormsModule en mi app.component.module porque estoy usando submódulos para todo.
login.module.ts:
fuente
Podría ayudar a alguien:
cuando tiene un formGroup en un modal (componente de entrada), entonces debe importar ReactiveFormsModule también en el módulo donde se instancia el modal.
fuente
Can't bind to 'formGroup' since it isn't a known property of 'form'
significa que intenta vincular una propiedad usando angular (
[prop]
) pero angular no puede encontrar nada que él sepa para ese elemento (en este casoform
).Esto puede suceder al no usar el módulo correcto (falta una importación en algún lugar del camino) y, a veces, solo causa un error tipográfico como:
[formsGroup]
, cons
despuésform
fuente
Mi solución fue sutil y no la vi listada.
Estaba usando formas reactivas en un componente de Diálogo de materiales angulares que no se declaró en
app.module.ts
. El componente principal se declaró enapp.module.ts
y abriría el componente de diálogo, pero el componente de diálogo no se declaró explícitamente enapp.module.ts
.No tuve ningún problema al usar el componente de diálogo normalmente, excepto que el formulario arrojó este error cada vez que abrí el diálogo.
Can't bind to 'formGroup' since it isn't a known property of 'form'.
fuente
En primer lugar, no está relacionado con las versiones angulares> 2 . Solo importa lo siguiente en tu archivo app.module.ts para solucionar los problemas.
Luego agregue FormsModule y ReactiveFormsModule a su matriz de importaciones.
Nota : También puede importar
ReactiveFormsModule
a un módulo específico en lugar deapp.module.ts
fuente
Una vez que agregué mi módulo,
AppModule
todo comenzó a funcionar bien.fuente