Reputation: 734
I got this message when I used the two-way binding [(ngModel)]
Template parse errors: Can't bind to 'ngModel' since it isn't a known property of 'input'.
I understand that importing the FormsModule is suppose to fix this issue as many people got here. However, I did had the FormsModule imported but it doesn't help, issue still be there
Definitely there is something else get wrong with my code. Can you shed a light. Here is my app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule, Routes } from '@angular/router';
import { ValidationModule } from './validation/validation.module';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app.module.routing';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
ValidationModule,
AppRoutingModule,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
}
here is my app.routing.module.ts
import { NgModule } from '@angular/core'
import { RouterModule, Routes } from '@angular/router'
import { Home1Component } from './home1.component';
import { Home2Component } from './home2.component';
const appRoutes = [
{ path: 'home1', component: Home1Component },
{ path: 'home2', component: Home2Component },
{ path: 'validation', loadChildren: './validation/validation.module#ValidationModule'}
];
@NgModule({
declarations:[
Home1Component,
Home2Component
],
imports: [
RouterModule.forRoot(appRoutes)
],
exports:[
RouterModule
]
})
export class AppRoutingModule {
}
and here is my html
<h1> home 1 </h1>
<form>
<input [(ngModel)]="currentHero.name">
<button type="button" (click)="onOkClicked()">Ok</button>
</form>
I attach my source code here, I'm using angular-cli source
Upvotes: 8
Views: 7148
Reputation: 657028
You need to add FormsModule
to imports in the module where you're using its directives:
@NgModule({
declarations:[
Home1Component,
Home2Component
],
imports: [
RouterModule.forRoot(appRoutes),
FormsModule, // <<<=== missing
],
exports:[
RouterModule
]
})
Upvotes: 5
Reputation: 5391
if you want to use reactive forms than you need to add : ReactiveFormsModule
@NgModule({
declarations:[
Home1Component,
Home2Component
],
imports: [
RouterModule.forRoot(appRoutes),
ReactiveFormsModule,
],
exports:[
RouterModule
]
})
Upvotes: 2