Я использую Angular 4 и получаю сообщение об ошибке в консоли:
Невозможно связать с 'ngModel', так как это не известное свойство 'input'
Как я могу решить это?
Я использую Angular 4 и получаю сообщение об ошибке в консоли:
Невозможно связать с 'ngModel', так как это не известное свойство 'input'
Как я могу решить это?
Ответы:
Чтобы использовать двустороннюю привязку данных для ввода формы, вам необходимо импортировать FormsModule
пакет в ваш угловой модуль.
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [
FormsModule
]
РЕДАКТИРОВАТЬ
Поскольку есть много повторяющихся вопросов с одной и той же проблемой, я усиливаю этот ответ.
Есть две возможные причины
Отсутствует FormsModule
, следовательно, добавьте это в свой модуль,
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [
FormsModule
]
Проверьте синтаксис / правописание [(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
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();
}));
С наилучшими пожеланиями и надеждой будет полезно
Вы ngModel
не работаете, потому что это еще не ваша часть NgModule
.
Вы должны сообщить, NgModule
что у вас есть полномочия для использования ngModel
в вашем приложении. Вы можете сделать это, добавив FormsModule
в свой app.module.ts
-> imports
-> []
.
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [ FormsModule ], // HERE
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
Я столкнулся с этой ошибкой при тестировании моего приложения Angular 6 с помощью Karma / Jasmine. Я уже импортировал FormsModule
в мой модуль верхнего уровня. Но когда я добавил новый компонент, который использовал [(ngModel)]
мои тесты начали проваливаться. В этом случае мне нужно было импортировать FormsModule
в мой TestBed
TestingModule
.
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
FormsModule
],
declarations: [
RegisterComponent
]
})
.compileComponents();
}));
В app.module.ts
добавление это:
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({
declarations: [AppComponent],
imports: [FormsModule],
})
Попробуйте добавить
ngModel на уровне модуля
Код такой же, как указано выше
Обновление с Angular 7.xx , столкнуться с той же проблемой в одном из моих модулей .
Если он лежит в вашем независимом модуле, добавьте эти дополнительные модули:
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
...
})
Простая демонстрация, чтобы доказать это.
Ответом для меня было неправильное написание ngModel
. У меня было написано так: ngModule
пока так и должно быть ngModel
.
Все остальные попытки, очевидно, не смогли устранить ошибку для меня.
import { FormsModule } from '@angular/forms';
// <<<< импортируем его сюда
BrowserModule, FormsModule
// <<<< и здесь
Так что просто ищите app.module.ts
или другой файл модуля и убедитесь, что вы FormsModule
импортировали в ...
модуль формы импорта в app.module.ts.
import { FormsModule} from '@angular/forms';
@NgModule({
declarations: [
AppComponent,
ContactsComponent
],
imports: [
BrowserModule,HttpModule,FormsModule //Add here form module
],
providers: [],
bootstrap: [AppComponent]
})
В HTML:
<input type="text" name="last_name" [(ngModel)]="last_name" [ngModelOptions]="{standalone: true}" class="form-control">
В моем случае я ошибся, я имел в виду ngmodel вместо n o M odel :) Надеюсь, это помогает!
Ожидаемый - [(ngModel)] Фактический - [(ngmodel)]
Вы должны проверить следующие вещи, если двусторонняя привязка не работает.
В html ngModel должен называться так. Нет зависимости от другого атрибута элемента ввода
<input [(ngModel)]="inputText">
Make Sure FormsModule импортируется в файл модулей
app.modules.ts
import { FormsModule } from '@angular/forms';
@NgModule({
declarations: [
AppComponent,
HomeComponent // suppose, this is the component in which you are trying to use two ay binding
],
imports: [
BrowserModule,
FormsModule,
// other modules
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Убедитесь, что компонент, в котором вы пытаетесь использовать ngModel для двухсторонней привязки, добавлен в объявлениях. Код добавлен в предыдущем пункте № 2
Это все, что вам нужно сделать, чтобы двусторонняя привязка работала с помощью ngModel, это проверено до угловых значений 9
Если вы хотите использовать двустороннее связывание данных для ввода формы, вам нужно импортировать пакет FormsModule в ваш модуль Angular. Для получения дополнительной информации см. Официальный учебник Angular 2 здесь и официальную документацию для форм
в app.module.ts добавьте следующие строки:
import { FormsModule } from '@angular/forms';
[...]
@NgModule({
imports: [
[...]
FormsModule
],
[...]
})
сначала импортируйте FormsModule, а затем используйте ngModel в ваших component.ts
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [
FormsModule
];
HTML-код:
<input type='text' [(ngModel)] ="usertext" />
Если даже после импорта модуля формы проблема не устранена, убедитесь, что ваш входной элемент не имеет атрибута «name» со значением, равным другому входному значению на странице.
FormsModule
вimports: []
модуль , в котором вы используетеngModel
. В противном случае опубликовать свой код.