无法绑定到“formGroup”,因为它不是“form”的已知属性

新手上路,请多包涵

情况

我正在尝试在我的 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 { }

问题

为什么我会收到这个错误?我错过了什么吗?

原文由 FrancescoMussi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 567
2 个回答

RC6/RC7/最终版本修复

要修复此错误,您只需在模块中从 @angular/forms 导入 ReactiveFormsModule 。这是带有 ReactiveFormsModule 导入的基本模块的示例:

 import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AppComponent }  from './app.component';

@NgModule({
    imports: [
        BrowserModule,
        FormsModule,
        ReactiveFormsModule
    ],
    declarations: [
        AppComponent
    ],
    bootstrap: [AppComponent]
})

export class AppModule { }

为了进一步解释, formGroup 是名为 FormGroupDirective 的指令的选择器,它是 ReactiveFormsModule 的一部分,因此需要导入它。它用于将现有的 FormGroup 绑定到 DOM 元素。您可以在 Angular 的官方文档页面 上阅读更多相关信息。

RC5 修复

您需要在控制器中添加 import { REACTIVE_FORM_DIRECTIVES } from '@angular/forms' 并将其添加到 directives 中的 @Component 。这将解决问题。

修复该问题后,您可能会收到另一个错误,因为您没有在表单输入中添加 formControlName="name"

原文由 Stefan Svrkota 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

 @NgModule({
  declarations: [
    YourNewComponent
  ]
})

原文由 Ramil Mammadov 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进