情况
我正在尝试在我的 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 许可协议
RC6/RC7/最终版本修复
要修复此错误,您只需在模块中从
@angular/forms
导入ReactiveFormsModule
。这是带有ReactiveFormsModule
导入的基本模块的示例:为了进一步解释,
formGroup
是名为FormGroupDirective
的指令的选择器,它是ReactiveFormsModule
的一部分,因此需要导入它。它用于将现有的FormGroup
绑定到 DOM 元素。您可以在 Angular 的官方文档页面 上阅读更多相关信息。RC5 修复
您需要在控制器中添加
import { REACTIVE_FORM_DIRECTIVES } from '@angular/forms'
并将其添加到directives
中的@Component
。这将解决问题。修复该问题后,您可能会收到另一个错误,因为您没有在表单输入中添加
formControlName="name"
。