私はAngular 4を使用していますが、コンソールにエラーが表示されます。
'ngModel'は 'input'の既知のプロパティではないためバインドできません
どうすればこれを解決できますか?
フォーム入力に双方向のデータバインディングを使用するには、Angular module にFormsModule
パッケージをインポートする必要があります。
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [
FormsModule
]
_編集_
同じ問題を持つ重複した質問がたくさんあるので、私はこの答えを強化しています。
考えられる理由は2つあります。
FormsModule
がないので、これをあなたのモジュールに追加してください。
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [
FormsModule
]
Inputタグの[(ngModel)]
の構文/つづりを確認してください
これは正しい答えです。 FormsMoudleをインポートする必要があります
app.module.tsの最初の
**
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
FormsModule,
ReactiveFormsModule ,
BrowserModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app.component.spec.tsの2番目の**
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';
import { FormsModule } from '@angular/forms';
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
FormsModule
],
declarations: [
AppComponent
],
}).compileComponents();
}));
よろしくおねがいします。
Karma/JasmineでAngular 6 Appをテストしたところ、このエラーに遭遇しました。最上位モジュールにFormsModule
をインポートしました。しかし、[(ngModel)]
を使用する新しいコンポーネントを追加したとき、私のテストは失敗し始めました。この場合、私はFormsModule
をTestBed
TestingModule
にインポートする必要がありました。
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
FormsModule
],
declarations: [
RegisterComponent
]
})
.compileComponents();
}));
まだあなたのngModel
の一部ではないので、あなたのNgModule
は機能していません。
あなたはNgModule
にあなたがアプリを通してngModel
を使う権限を持っていることを伝えなければなりません、あなたのFormsModule
をapp.module.ts
- > imports
-> []
。
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [ FormsModule ], // HERE
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
追加してみてください
モジュールレベルのngModel
コードは上記と同じです
app.module.ts
にこれを追加します。
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({
declarations: [AppComponent],
imports: [FormsModule],
})
上記の問題の解決法はすべて正しいです。しかし、遅延ロードを使用している場合は、FormsModule
をフォームを持つ子モジュールにインポートする必要があります。 app.module.ts
に追加しても役に立ちません。
追加する必要があります
import { FormsModule } from '@angular/forms';
imports: [
BrowserModule,
FormsModule,
AppRoutingModule
],
私の場合、足りないインポートを追加しました。それはReactiveFormsModule
です。
最初にFormsModuleをインポートしてから、component.tsでngModelを使用します。
@NgModule({
imports: [
FormsModule ];
<input type='text' [(ngModel)] ="usertext" />
Angular 7.x.xで更新し、my modules のいずれかで同じ問題が発生する。
それがあなたの独立したモジュールにあるならば、これらの追加モジュールを追加してください:
import { CommonModule } from "@angular/common";
import { FormsModule } from "@angular/forms";
@NgModule({
imports: [CommonModule, FormsModule], // the order can be random now;
...
})
それがあなたのapp.module.ts
にあるなら、これらのモジュールを追加してください:
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [ FormsModule, BrowserModule ], // order can be random now
...
})
ケースを証明する簡単な デモ 。
//import form module in app.module.ts.
import { FormsModule} from '@angular/forms';
@NgModule({
declarations: [
AppComponent,
ContactsComponent
],
imports: [
BrowserModule,HttpModule,FormsModule //Add here form module
],
providers: [],
bootstrap: [AppComponent]
})
//In html
<input type="text" name="last_name" [(ngModel)]="last_name" [ngModelOptions]="{standalone: true}" class="form-control">
フォーム入力に双方向データバインディングを使用する場合は、AngularモジュールにFormsModuleパッケージをインポートする必要があります。詳細については、Angular 2公式チュートリアルおよびフォームの公式ドキュメントを参照してください。
app.module.tsに以下の行を追加します。
import { FormsModule } from '@angular/forms';
[...]
@NgModule({
imports: [
[...]
FormsModule
],
[...]
})
私への答えはngModel
の間違ったスペルでした。私はそれを次のように書いてもらいました:ngModule
、それはngModel
であるべきです。
他のすべての試みは明らかに私のためのエラーを解決するために失敗しました。
import { FormsModule } from '@angular/forms';
// <<<<ここにインポートする
BrowserModule, FormsModule
// <<<<とここ
それで、単にapp.module.ts
または他のモジュールファイルを探して、FormsModule
がインポートされていることを確認します.