这种情况

我试图在我的Angular应用程序中创建一个非常简单的表单,但无论如何,它都无法工作。

Angular版本

Angular 2.0.0 RC5

这个错误

不能绑定到'formGroup'因为它不是'form'的已知属性

的代码

视图

<form [formGroup]="newTaskForm" (submit)="createNewTask()">
   <div class="form-group">
      <label for="name">Name</label>
      <input type="text" name="name" required>
   </div>
   <button type="submit" class="btn btn-default">Submit</button>
</form>

控制器

import { Component } from '@angular/core';
import { FormGroup, FormControl, Validators, FormBuilder }  from '@angular/forms';
import {FormsModule,ReactiveFormsModule} from '@angular/forms';
import { Task } from './task';

@Component({
    selector: 'task-add',
    templateUrl: 'app/task-add.component.html'

})
export class TaskAddComponent {

    newTaskForm: FormGroup;

    constructor(fb: FormBuilder)
    {
        this.newTaskForm = fb.group({
            name: ["", Validators.required]
        });
    }

    createNewTask()
    {
        console.log(this.newTaskForm.value)
    }
}

《ngModule

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule }   from '@angular/forms';

import { routing }        from './app.routing';
import { AppComponent }  from './app.component';
import { TaskService } from './task.service'

@NgModule({
    imports: [
        BrowserModule,
        routing,
        FormsModule
    ],
    declarations: [ AppComponent ],
    providers: [
        TaskService
    ],
    bootstrap: [ AppComponent ]
})
export class AppModule { }

这个问题

为什么会出现这个错误?我遗漏了什么吗?


当前回答

在app. modal .ts文件中导入下面的行,然后在angular cli中运行ng s -o命令。

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

其他回答

当你在一个模态(entrycomponent)中有一个formGroup时,你也必须在模态实例化的模块中导入ReactiveFormsModule。

如果正确导入了FormModule和ReactiveFormModule,可能会出现另一个问题。也许你没有将你的组件添加到app模块的模块声明中。所以把你的组件添加到app.module.ts声明中:

@NgModule({
  declarations: [
    YourNewComponent
  ]
})

我在尝试做端到端测试时遇到了这个错误,没有答案让我抓狂。

如果你正在做测试,找到你的*.specs。Ts文件并添加:

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

在<componenet.module中添加“ReactiveFormsModule”。ts >父

import { NgModule } from '@angular/core';
import {FormsModule, ReactiveFormsModule} from "@angular/forms";

@NgModule({
   declarations: [
        .....
   ],
   imports: [
        .....
        FormsModule,
        ReactiveFormsModule

    ]
})
export class InvoiceModule { }

ReactiveFormsModule和FormsModule导入应该添加到您的自定义组件模块中,以及调用它的父组件中。

例如,我需要为过滤器组件添加表单。所以我应该在我的过滤器模块和它的父页面(可能是列表)模块中添加这个导入,从这个过滤器按钮被单击的地方开始。