A SITUAÇÃO:
Por favor ajude! Estou tentando criar o que deve ser uma forma muito simples no meu aplicativo Angular2, mas não importa o que nunca funcione.
VERSÃO ANGULAR:
Angular 2.0.0 Rc5
O ERRO:
Can't bind to 'formGroup' since it isn't a known property of 'form'
O CÓDIGO:
A 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>
O 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)
}
}
O 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 { }
A QUESTÃO:
Por que estou recebendo esse erro?
Estou esquecendo de algo?
fonte
FormsModule
eReactiveFormsModule
. Vou editar minha resposta.ReactiveFormsModule
na lista de provedores e funcionou. Não tenho certeza se é assim que você deve fazê-lo.O Angular 4 em combinação com os módulos de recursos (se você estiver usando, por exemplo, um módulo compartilhado) exige que você também exporte o
ReactiveFormsModule
para o trabalho.fonte
Ok, depois de algumas escavações, encontrei uma solução para "Não é possível vincular ao 'formGroup', pois não é uma propriedade conhecida de 'form'."
No meu caso, eu tenho usado vários arquivos de módulos, adicionei ReactiveFormsModule em app.module.ts
Mas isso não estava funcionando quando eu uso uma diretiva [formGroup] de um componente adicionado em outro módulo, por exemplo, usando [formGroup] no author.component.ts, inscrito no arquivo author.module.ts:
Eu pensei que se eu adicionasse ReactiveFormsModule em app.module.ts, por padrão ReactiveFormsModule seria herdado por todos os seus módulos filhos como author.module neste caso ... (errado!). Eu precisava importar ReactiveFormsModule em author.module.ts para fazer com que todas as diretivas funcionassem:
Portanto, se você estiver usando submódulos, importe ReactiveFormsModule em cada arquivo de submódulo. Espero que isso ajude alguém.
fonte
Eu encontrei esse erro durante o teste de unidade de um componente (somente durante o teste, no aplicativo funcionava normalmente). A solução é importar
ReactiveFormsModule
no.spec.ts
arquivo:fonte
A resposta sugerida não funcionou para mim no Angular 4. Em vez disso, tive que usar outra maneira de vincular atributos com o
attr
prefixo:fonte
attr.
?ReactiveFormsModule
diretamente para a minha página.module.ts
. Não.page.ts
... quando fiz isso, meu modelo conseguiu identificar corretamente oformGroup
atributo, sem oattr.
prefixo.Se você precisar importar dois módulos, adicione assim abaixo
fonte
Lembre-se de que se você definiu "Módulos de recursos", precisará importar no Módulo de recursos, mesmo se já tiver importado para o
AppModule
. Na documentação Angular:https://angular.io/docs/ts/latest/guide/ngmodule.html
fonte
O erro diz que o FormGroup não é reconhecido neste módulo. Então, você precisa importar esses módulos (abaixo) em todos os módulos que usam o FormGroup
Em seguida, adicione FormsModule e ReactiveFormsModule na matriz de importações do módulo .
Você pode estar pensando que eu já o adicionei no AppModule e ele deve herdar dele? Mas não é. porque esses módulos estão exportando diretivas necessárias que estão disponíveis apenas na importação de módulos. Leia mais aqui ... https://angular.io/guide/sharing-ngmodules .
Outros fatores para esses erros podem ser erros de ortografia, como abaixo ...
[FormGroup] = "form" Capital F em vez de pequeno f
[formsGroup] = "form" Extra s após o formulário
fonte
Eu tive o mesmo problema com o Angular 7. Basta importar o seguinte no seu arquivo app.module.ts.
Em seguida, adicione FormsModule e ReactiveFormsModule à sua matriz de importações.
fonte
Esse problema ocorre devido à falta de importação de FormsModule, ReactiveFormsModule. Também vii com o mesmo problema. Meu caso foi diferente. Como eu estava trabalhando com modules.So eu perdi as importações acima em meus módulos pai, embora eu tivesse importado para módulos filho, ele não estava funcionando.
Então eu importei-o para os meus módulos pai, como abaixo, e funcionou!
fonte
Para pessoas passeando por esses tópicos sobre esse erro. No meu caso, eu tinha um módulo compartilhado onde exportava apenas o FormsModule e o ReactiveFormsModule e esqueci de importá-lo. Isso causou um erro estranho de que os grupos de formulários não estavam funcionando nos subcomponentes. Espero que isso ajude as pessoas a coçar a cabeça.
fonte
Eu estava encontrando esse erro ao tentar fazer o teste e2e e estava me deixando louco por não haver respostas para isso.
Se você estiver testando , localize seu arquivo * .specs.ts e adicione:
fonte
UMA PEQUENA NOTA: Tenha cuidado com as carregadeiras e minimize (Rails env.):
Depois de ver esse erro e tentar todas as soluções existentes, percebi que havia algo errado com meu carregador de html.
Configurei meu ambiente Rails para importar caminhos HTML para meus componentes com sucesso com este loader (
config/loaders/html.js.
):Depois de algumas horas esforços e incontável de importações ReactiveFormsModule eu vi que o meu
formGroup
foi pequenas letras:formgroup
.Isso me levou ao carregador e ao fato de que ele reduziu meu HTML a minimizar.
Depois de alterar as opções, tudo funcionou como deveria, e eu poderia voltar a chorar novamente.
fonte
usando e importando REACTIVE_FORM_DIRECTIVES :
fonte
Se você tiver esse problema ao desenvolver um componente, adicione esses dois módulos ao módulo mais próximo:
E se você estiver desenvolvendo um teste para seus componentes, adicione este módulo ao seu arquivo de teste desta forma:
fonte
Importar ReactiveFormsModule no módulo correspondente
fonte
Solução simples:
etapa 1: importar ReactiveFormModule
etapa 2: adicione "ReactiveFormsModule" à seção de importação
Etapa 3: reiniciar o aplicativo e pronto
Exemplo:
fonte
Importe e registre ReactiveFormsModule em seu app.module.ts.
Verifique se a ortografia está correta nos arquivos .ts e .html. xxx.ts
arquivo xxx.html-
Por engano, escrevi [FormGroup] no lugar de [formGroup]. Verifique a ortografia corretamente em .html. Não gera erro de tempo de compilação Se algo estiver errado no arquivo .html.
fonte
Nota : se você estiver trabalhando dentro do componente do módulo filho, precisará importar ReactiveFormsModule no módulo filho, em vez do módulo raiz do aplicativo pai
fonte
Não seja burro como eu. Estava recebendo o mesmo erro acima, NENHUMA das opções deste segmento funcionou. Então percebi que estava em maiúscula 'F' no FormGroup. Doh!
Ao invés de:
[FormGroup]="form"
Faz:
[formGroup]="form"
fonte
se este for apenas um erro de digitação, mas tudo no seu formulário funcionar, talvez seja necessário reiniciar o IDE
fonte
Eu tive o mesmo problema, verifique se, ao usar submódulos (por exemplo, você não apenas possui app.component.module.ts, mas também um componente separado, como login.module.ts, inclui a importação ReactiveFormsModule nesse logon .module.ts import, para que funcione.Eu nem preciso importar ReactiveFormsModule no meu app.component.module porque estou usando submódulos para tudo.
login.module.ts:
fonte
Pode ajudar alguém:
quando você tem um formGroup em um modal (entrycomponent), é necessário importar ReactiveFormsModule também no módulo em que o modal é instanciado.
fonte
Can't bind to 'formGroup' since it isn't a known property of 'form'
significa que você tenta vincular uma propriedade usando angular (
[prop]
), mas angular não pode encontrar nada que ele saiba sobre esse elemento (nesse casoform
).isso pode acontecer não usando o módulo correto (faltando uma importação em algum lugar do caminho) e às vezes apenas causando um erro de digitação como:
[formsGroup]
, coms
depoisform
fonte
Minha solução foi sutil e ainda não a vi listada.
Eu estava usando formas reativas em um componente da caixa de diálogo Angular Materials que não foi declarado
app.module.ts
. O componente principal foi declarado emapp.module.ts
e abriria o componente de diálogo, mas o componente de diálogo não foi declarado explicitamente emapp.module.ts
.Não tive problemas ao usar o componente de diálogo normalmente, exceto que o formulário gerava esse erro sempre que eu abria o diálogo.
Can't bind to 'formGroup' since it isn't a known property of 'form'.
fonte
Em primeiro lugar, não está relacionado às versões angulares> 2 . Basta importar o seguinte no arquivo app.module.ts para corrigir os problemas.
Em seguida, adicione FormsModule e ReactiveFormsModule à sua matriz de importações.
Nota : Você também pode importar
ReactiveFormsModule
para um módulo específico em vez deapp.module.ts
fonte
Depois que adicionei meu módulo ao
AppModule
tudo, tudo começou a funcionar bem.fonte