Estou recebendo esse erro do Angular 2
core.umd.js: 5995 EXCEÇÃO: Não capturado (em promessa): Erro: Erro no app / model_exposure_currencies / model_exposure_currencies.component.html: 57: 18 causado por: Se ngModel for usado em uma tag de formulário, o atributo name deverá ser set ou o controle de formulário deve ser definido como 'autônomo' em 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>
É assim que eu uso a tag form:
<form #f="ngForm" (ngSubmit)="onSubmit()">
angular
angular-forms
Tampa
fonte
fonte
Respostas:
Se ngForm for usado, todos os campos de entrada que tiverem
[(ngModel)]=""
que ter um nome de atributo com um valor.fonte
Como todo desenvolvedor tem o hábito comum de não ler o erro completo, basta ler a primeira linha e começar a procurar a resposta de outra pessoa :) :) Eu também sou um deles, por isso estou aqui:
Leia o erro, dizendo claramente:
O que mais precisamos para entender esse erro?
Use qualquer opção para que tudo funcione bem.
fonte
[ngModelOptions]="{standalone: true}
: stackoverflow.com/a/38368261/3135317 . No meu caso, recebi o temido `ngModel é usado em uma tag de formulário, ou o atributo name deve ...` erro quando eu tinha um `* ngFor * para uma matriz aninhada. A ligação do modelo estava boa, o modelo vomitou. "Exemplo 1" NÃO PODERIA TRABALHAR ; "Exemplo 2" foi perfeito.Os dois atributos são necessários e também checam novamente todos os elementos do formulário com o atributo "name". se você estiver usando o conceito de envio de formulário, caso contrário, use a tag div em vez do elemento do formulário.
fonte
No meu caso, o erro ocorreu porque abaixo na marcação html havia mais uma linha sem o atributo name .
Mas o navegador ainda relata a primeira linha com o erro. E é difícil descobrir a fonte do erro se você tiver outros elementos entre esses dois.
fonte
Quando você olha claramente para o console, ele fornece dois exemplos.
ou
<input [(ngModel)]="person.firstName" name="first">
fonte
Notei que a ferramenta de desenvolvedor do Chrome às vezes apenas sublinha o primeiro elemento em vermelho swiggly, mesmo se estiver corretamente configurado com um nome. Isso me assustou por um tempo.
É necessário adicionar um nome a cada elemento no formulário que contém ngModel, independentemente de qual deles esteja sublinhado.
fonte
É bastante fácil para uma correção.
Para mim, tivemos mais de uma entrada no formulário. Precisamos isolar a entrada / linha causando erro e simplesmente adicionar o
name
atributo Isso corrigiu o problema para mim:Antes:
Depois: i acabou de adicionar o
name
atributo paraselect
echeckbox
e que corrigiu o problema. Do seguinte modo:Como você vê, adicionou o
name
atributo. Não é necessário receber o mesmongModel
nome que você. Basta fornecer oname
atributo para corrigir o problema.fonte
Você precisa importar {NgForm} de @ angular / forms em seu page.ts;
Código HTML:
Em seu Page.ts, implemente sua função para manipular dados do formulário:
fonte
Tente isso ...
fonte
Para todos que não entram em pânico com a própria mensagem de erro, mas apenas pesquisam a explicação de por que o exemplo daqui não funciona ( por exemplo, a filtragem dinâmica não ocorre quando o texto é digitado no campo de entrada): não funciona até você adicionar o parâmetro name no campo de entrada. Nada aponta para a explicação de por que o canal não está funcionando, mas a mensagem de erro aponta para este tópico e corrigi-lo de acordo com a resposta aceita faz o filtro dinâmico funcionar.
fonte
Você não mencionou a versão que está usando, mas se estiver usando rc5 ou rc6, esse estilo "antigo" de formulário foi preterido. Dê uma olhada nisto para obter orientação sobre as "novas" técnicas de formulários: https://angular.io/docs/ts/latest/guide/forms.html
fonte
Para poder exibir as informações da forma que você deseja, é necessário fornecer essas entradas específicas de nomes de interesse. Eu recomendo que você tenha:
fonte
Para mim, a solução foi muito simples. Mudei a
<form>
tag para um<div>
e o erro desapareceu.fonte
Essas são as três coisas necessárias para usar o ngModel dentro de uma diretiva formGroup.
Observe que o mesmo nome deve ser usado.
fonte