2016-10-01 42 views
2

我收到Can't bind to 'ngModel' since it isn't a known property of 'input'.错误,虽然我已经导入了FormsModule角2:无法绑定到“ngModel”即使FormsModule是进口

的package.json:

"@angular/common": "2.0.0", 
    "@angular/compiler": "2.0.0", 
    "@angular/core": "2.0.0", 
    "@angular/forms": "^2.0.0", 

在主app.module:

import { FormsModule, ReactiveFormsModule } from '@angular/forms'; 
... 
@NgModule({ 
    bootstrap: [App], 
    declarations: [ 
    App 
    ], 
    imports: [ // import Angular's modules 
    BrowserModule, 
    HttpModule, 
    RouterModule, 
    FormsModule, 
    ReactiveFormsModule, 
    NgaModule, 
    PagesModule, 
    routing 
    ] 

此处,我的分量的路径(pages.routes.ts):

import { NewProjectModule, BasicForm } from './new-project/new-project.module'; 
... 
{ path: 'new-project', component: BasicForm }, 

这里是组件模块:

import { FormsModule } from '@angular/forms'; 
... 
import { BasicForm } from './basicForm.component'; 
... 
export { BasicForm } from './basicForm.component'; 

@NgModule({ 
    imports: [CommonModule, FormsModule, BrowserModule], 
    exports: [BasicForm], 
    declarations: [BasicForm] 
}) 
export default class NewProjectModule { 
} 

而且进口FormsModule到组件刚刚好措施:

import {Component} from '@angular/core'; 
import { FormsModule } from '@angular/forms'; 

@Component({ 
    selector: 'basic-form', 
    template: ` 
<input type="text" class="form-control" id="directory" placeholder="C:\Users\Matt\Documents\Projects" [(ngModel)]="project.directory"> 
    ` 
}) 

错误是在上面的模板行抛出。

+0

什么是NgaModule?你在哪里使用ngModle?我的意思是在哪个模块中? – micronyks

+0

NgaModule是一个主题模块。 ngModel用于包含组件的模块中。我也包括FormsModule,但我认为主要的AppModule应该足够了? – mtyson

+0

@mtyson模板行不在app.component.html中,然后在app.module.ts的声明中添加该组件。 – Sanket

回答

0

的ngModel是angular2指令, 这个指令可以其本身或作为一个更大的形式的一部分来使用。所有你需要的是ngModel选择器来激活它。

所以无需导入

import { FormsModule } from '@angular/forms'; 

我觉得你的语法是正确的。

只是通过导入下面的包

import { Component, OnInit } from '@angular/core'; 

如果尝试它仍然没有工作只是chnage这样

<input type="text" class="form-control" id="directory" [value]="project.directory"> 
{{project.directory}} 

或者

<input type="text"[(ngModel)]="project.directory"> 
    {{project.directory}} 

模板如果它仍然有错误您的问题是'project.directory'或'我的一些其他财产NPUT。

通过这个https://angular.io/docs/ts/latest/api/forms/index/NgModel-directive.html约ngModel的详细信息。

+0

我不认为这是正确的。我见过的所有东西都说你必须导入FormsModule才能使用NgModel。 – mtyson

+0

https://angular.io/docs/ts/latest/api/forms/index/NgModel-directive.html 检查此链接,在我的知识中没有必要导入{form module}, 您需要导入{表单模块}仅用于获取表单指令,如ngControl,ngFormModel等 –

0

不能说什么做的,但我完全重构和问题得到解决。

代替使用在路由定义的部件的,我用loadChildren:

{ path: 'new-project', loadChildren:() => System.import('./new-project/new-project.module') }, 

其拉模块中。在模块中,我确保导入FormsModule:

import { FormsModule } from '@angular/forms'; 
... 
@NgModule({ 
    imports: [CommonModule, NgaModule, FormsModule, routing], 

现在角正在为表单模板找到NgModel。

相关问题