Can't bind to 'ngModel' since it isn't a known property of 'input'

前端 未结 30 1019
予麋鹿
予麋鹿 2020-11-22 12:44

I\'ve got the following error when launching my Angular app, even if the component is not displayed.

I have to comment out the so that my

相关标签:
30条回答
  • 2020-11-22 13:05

    In order to be able to use two-way data binding for form inputs you need to import theFormsModule package in your Angular module. For more info see the Angular 2 official tutorial here and the official documentation for forms

    0 讨论(0)
  • 2020-11-22 13:05

    There are two steps you need to follow to get rid of this error

    1. import FormsModule in your app module
    2. Pass it as value of imports in @NgModule decorator

    basically app.module.ts should look like below :

        import { NgModule }      from '@angular/core';
        import { BrowserModule } from '@angular/platform-browser';
        import { FormsModule }   from '@angular/forms';       
        import { AppComponent }  from './app.component';
        import {AppChildComponent} from './appchild.component';
        @NgModule({
          imports:      [ BrowserModule,FormsModule ],
          declarations: [ AppComponent, AppChildComponent ],
          bootstrap:    [ AppComponent ]
        })
        export class AppModule { }
    

    Hope it helps

    0 讨论(0)
  • 2020-11-22 13:05

    ngModel is the part of FormsModule. And it should be imported from @angular/forms to work with ngModel.

    Please change the app.module.ts as follow:

    import { FormsModule } from '@angular/forms';
    
    [...]
    
    @NgModule({
      imports: [
        [...]
        FormsModule
      ],
      [...]
    })
    
    0 讨论(0)
  • 2020-11-22 13:05

    If someone is still getting errors after applying the accepted solution, it could be possibly because you have a separate module file for the component in which you want to use the ngModel property in input tag. In that case, apply the accepted solution in the component's module.ts file as well.

    0 讨论(0)
  • 2020-11-22 13:06

    ngModel should be imported from @angular/forms because it is the part of FormsModule. So I advice you to change your app.module.ts in something like this:

    import { FormsModule } from '@angular/forms';
    
    [...]
    
    @NgModule({
      imports: [
        [...]
        FormsModule
      ],
      [...]
    })
    
    0 讨论(0)
  • 2020-11-22 13:07

    For using [(ngModel)] in Angular 2, 4 & 5+, You need to import FormsModule from Angular form...

    Also it is in this path under forms in Angular repo in github:

    angular / packages / forms / src / directives / ng_model.ts

    Probably this is not a very pleasure for the AngularJs developers as you could use ng-model everywhere anytime before, but as Angular tries to separate modules to use whatever you'd like you to want to use at the time, ngModel is in FormsModule now.

    Also if you are using ReactiveFormsModule, needs to import it too.

    So simply looks for app.module.ts and make sure you have FormsModule imported in...

    import { BrowserModule } from '@angular/platform-browser';
    import { NgModule } from '@angular/core';
    import { FormsModule } from '@angular/forms';  //<<<< import it here
    import { AppComponent } from './app.component';
    
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        BrowserModule, FormsModule //<<<< and here
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    
    export class AppModule { }
    

    Also this is the current starting comments for Angular4 ngModel in FormsModule:

    /**
     * `ngModel` forces an additional change detection run when its inputs change:
     * E.g.:
     * ```
     * <div>{{myModel.valid}}</div>
     * <input [(ngModel)]="myValue" #myModel="ngModel">
     * ```
     * I.e. `ngModel` can export itself on the element and then be used in the template.
     * Normally, this would result in expressions before the `input` that use the exported directive
     * to have and old value as they have been
     * dirty checked before. As this is a very common case for `ngModel`, we added this second change
     * detection run.
     *
     * Notes:
     * - this is just one extra run no matter how many `ngModel` have been changed.
     * - this is a general problem when using `exportAs` for directives!
     */
    

    If you'd like to use your input, not in a form, you can use it with ngModelOptions and make standalone true...

    [ngModelOptions]="{standalone: true}"
    

    For more info, Look at ng_model in Angular section here

    0 讨论(0)
提交回复
热议问题