Eu recebi o seguinte erro ao iniciar meu aplicativo Angular, mesmo que o componente não seja exibido.
Eu tenho que comentar o <input>
para que meu aplicativo funcione.
zone.js:461 Unhandled Promise rejection: Template parse errors:
Can't bind to 'ngModel' since it isn't a known property of 'input'. ("
<div>
<label>Created:</label>
<input type="text" [ERROR ->][(ngModel)]="test" placeholder="foo" />
</div>
</div>"): InterventionDetails@4:28 ; Zone: <root> ; Task: Promise.then ; Value:
Estou olhando para o afunilador Hero, mas não vejo diferença no meu código.
Aqui está o arquivo do componente:
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { Intervention } from '../../model/intervention';
@Component({
selector: 'intervention-details',
templateUrl: 'app/intervention/details/intervention.details.html',
styleUrls: ['app/intervention/details/intervention.details.css']
})
export class InterventionDetails
{
@Input() intervention: Intervention;
public test : string = "toto";
}
javascript
angular
typescript
input
Anthony Brenelière
fonte
fonte
Respostas:
Sim, é isso, no app.module.ts, acabei de adicionar:
fonte
[{ngModel}]
em vez do correto:[(ngModel)]
component.spec.ts
arquivo.Para poder usar a ligação de dados bidirecional para entradas de formulário, você precisa importar o
FormsModule
pacote no seuAngular
módulo. Para mais informações, consulte oAngular 2
tutorial oficial aqui e a documentação oficial dos formuláriosfonte
import { FORM_DIRECTIVES } from '@angular/forms';
e acrescentou oFORM_DIRECTIVES
com as directivas e sim a minha ligação está funcionando novamente (Para ser claro que estava trabalhando antes do lançamento rc5)FORM_DIRECTIVES
estão mortos por precaução #Para usar
[(ngModel)]
no Angular 2 , 4 e 5+ , você precisa importar o FormsModule do formulário Angular ...Também está neste caminho em formulários no repositório Angular no github :
Provavelmente, isso não é muito prazeroso para os desenvolvedores do AngularJs, já que você pode usar o ng-model em qualquer lugar a qualquer momento, mas como o Angular tenta separar os módulos para usar o que você gostaria que você usasse naquele momento, o ngModel está no FormsModule agora .
Além disso, se você estiver usando o ReactiveFormsModule, também precisará importá-lo.
Então, basta procurar app.module.ts e certificar-se de ter
FormsModule
importado ...Além disso, este é os comentários iniciais atuais para Angular4
ngModel
no FormsModule :Se você deseja usar sua entrada, não em um formulário, pode usá-la com
ngModelOptions
e tornar autônoma verdadeira ...Para mais informações, consulte ng_model na seção Angular aqui
fonte
Você precisa importar o FormsModule
Abra app.module.ts
e adicione linha
e
fonte
Jogar isso pode ajudar alguém.
Supondo que você tenha criado um novo NgModule, por exemplo,
AuthModule
dedicado a lidar com suas necessidades de Auth, certifique-se de importar tambémFormsModule
nesse AuthModule .Se você usar o
FormsModule
ONLY noAuthModule
, não precisará importar oFormModule
IN padrãoAppModule
Então, algo assim no
AuthModule
:Em seguida, esqueça de importar
AppModule
se você não usar oFormsModule
outro lugar.fonte
Exemplo 1
Exemplo 2
fonte
Importe o FormsModule nos módulos em que deseja usar o [(ngModel)]
fonte
Há duas etapas que você precisa seguir para se livrar desse erro
basicamente app.module.ts deve ser parecido abaixo:
Espero que ajude
fonte
Você precisa importar o FormsModule no seu módulo raiz se este componente estiver na raiz, por exemplo, app.module.ts
Por favor, abra app.module.ts
Importar FormsModule de @ angular / forms
Ex:
e
fonte
Estou usando o Angular 7
Preciso importar ReactiveFormsModule porque estou usando a classe FormBuilder para criar um formulário reativo.
fonte
importe FormsModule no seu módulo de aplicativo.
deixaria seu aplicativo rodando bem.
fonte
Se você precisa usar
[(ngModel)]
primeiro você precisa importarFormsModule
emapp.module.ts
e em seguida, adicione em uma lista de importações. Algo assim:app.module.ts
import {FormsModule} from "@angular/forms";
imports: [ BrowserModule, FormsModule ],
app.component.ts
<input type="text" [(ngModel)]="name" >
<h1>your name is: {{name}} </h1>
fonte
ngModel é a parte do FormsModule. E deve ser importado de @ angular / forms para trabalhar com o ngModel.
Altere o app.module.ts da seguinte maneira:
fonte
Se alguém ainda estiver obtendo erros após aplicar a solução aceita, talvez seja porque você possui um arquivo de módulo separado para o componente no qual deseja usar a propriedade ngModel na tag de entrada. Nesse caso, aplique a solução aceita no arquivo module.ts do componente também.
fonte
Estou usando o Angular 5.
No meu caso, eu precisava importar o RactiveFormsModule também.
app.module.ts (ou anymodule.module.ts)
fonte
ReactiveFormsModule
é necessário quando você precisaFormGroup, FormControl ,Validators
etc. Para usarngModel
, você não precisaReactiveFormsModule
.Sei que esta pergunta é sobre o Angular 2, mas estou no Angular 4 e nenhuma dessas respostas ajudou.
No Angular 4, a sintaxe precisa ser
Espero que isto ajude.
fonte
se você ainda estiver recebendo o erro depois de importar o FormsModule corretamente, verifique no seu terminal ou (console do Windows) porque seu projeto não está sendo compilado (por causa de outro erro que possa ser qualquer coisa) e sua solução não foi refletida no seu navegador!
No meu caso, meu console teve o seguinte erro não relacionado: A propriedade 'retrieveGithubUser' não existe no tipo 'ApiService'.
fonte
No módulo que você deseja usar o ngModel, é necessário importar o FormsModule
fonte
O ngModel é proveniente do FormsModule. Existem alguns casos em que você pode receber esse tipo de erro:
(Em alguma versão, enfrentei esse problema) Você importou corretamente o FormsModule, mas o problema está na marca HTML de entrada. Você deve adicionar o atributo da tag de nome para entrada e o nome do objeto vinculado em [(ngModel)] deve ser o mesmo que o nome no atributo de nome
fonte
Em
ngModule
você precisa importarFormsModule
, porquengModel
está vindoFormsModule
. Modifique seu app.module.ts como o código abaixo que compartilheifonte
importar FormModule um app.module
fonte
fonte
Às vezes, você recebe esse erro ao tentar usar um componente de um módulo, que não é compartilhado, em um módulo diferente.
Por exemplo, você tem 2 módulos com module1.componentA.component.ts e module2.componentC.component.ts e tenta usar o seletor de module1.componentA.component.ts em um modelo dentro de module2 (por exemplo
<module1-componentA [someInputVariableInModule1]="variableFromHTTPRequestInModule2">
), ele lançará o erro que o someInputVariableInModule1 não está disponível dentro do module1.componentA.component.ts - mesmo que você tenha o@Input() someInputVariableInModule1
no module1.componentA.Se isso acontecer, você deseja compartilhar o module1.componentA para ser acessível em outros módulos. Portanto, se você compartilhar o module1.componentA dentro de um sharedModule, o module1.componentA poderá ser utilizado dentro de outros módulos (fora do módulo1), e todos os módulos que importarem o sharedModule poderão acessar o seletor em seus modelos, injetando a
@Input()
variável declarada.fonte
Para o meu cenário, eu tive que importar [CommonModule] e [FormsModule] para o meu módulo
fonte
Você precisa importar o FormsModule
Abra app.module.ts
e adicione linha
e
fonte
Às vezes, se já são importados
BrowserModule
,FormsModule
e outros módulos relacionados que eu tenho o mesmo erro, então eu percebi que nós precisamos importá-los em Ordem , no meu caso eu perdi. Então ordem deve ser comoBrowserModule
,FormsModule
,ReactiveFormsModule
.Espero que isso ajude alguém .. :)
fonte
Isso é para as pessoas que usam JavaScript simples em vez do Script de tipo. Além de referenciar o arquivo de script de formulários na parte superior da página, como abaixo
você também deve informar ao carregador do módulo para carregar o
ng.forms.FormsModule
. Depois de fazer as alterações, minhaimports
propriedade doNgModule
método ficou abaixoimports: [ng.platformBrowser.BrowserModule, ng.forms.FormsModule],
Feliz codificação!
fonte
Atualizei do RC1 para o RC5 e recebi esse erro.
Concluí minha migração (introduzindo um novo
app.module.ts
arquivo, alterandopackage.json
para incluir novas versões e módulos ausentes e, finalmente, alterando meumain.ts
para inicializar adequadamente, com base no exemplo de início rápido do Angular2 ).Fiz um
npm update
e depois umnpm outdated
para confirmar que as versões instaladas estavam corretas, ainda sem sorte.Acabei limpando completamente a
node_modules
pasta e reinstalando comnpm install
- Voila! Problema resolvido.fonte
Quando eu fiz o tutorial, o main.ts parecia um pouco diferente do que é agora. Parece muito semelhante, mas observe as diferenças (a primeira está correta).
Corrigir:
Código do tutorial antigo:
fonte
adicione o código ao app.module.ts Funcionou para mim:
fonte