简体   繁体   中英

Angular 2: Template parse errors: Can't bind to 'ngModel' since it isn't a known property of 'input'

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

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
    ]
})

if you want to use reactive forms than you need to add : ReactiveFormsModule

@NgModule({
    declarations:[
        Home1Component,
        Home2Component
    ],
    imports: [
        RouterModule.forRoot(appRoutes),
        ReactiveFormsModule, 
    ],
    exports:[
        RouterModule
    ]
})

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM