我正在学习Angular。虽然官方教程对我来说效果很好,但我对“反应式表单”的“世界好”一无所知。我正在关注https://angular.io/guide/reactive-forms。我在另一个明智的工作项目中创建了一个新组件,以使用ReactiveForm创建输入文本框。模板html如下:
<div>
<label>
Name:
<input type="text" [formControl]="name">
</label>
</div>
组件类如下
import { Component, OnInit } from '@angular/core';
import {FormControl} from '@angular/forms';
@Component({
selector: 'app-party-worker',
templateUrl: './party-worker.component.html',
styleUrls: ['./party-worker.component.scss']
})
export class PartyWorkerComponent implements OnInit {
name = new FormControl('');
constructor() { }
ngOnInit() {
}
}
浏览器中的错误读取如下内容。
Uncaught Error: Template parse errors:
No provider for NgControl ("
<label>
Name:
[ERROR ->]<input type="text" [formControl]="name">
</label>
</div>"): ng:///ViewsModule/PartyWorkerComponent.html@3:6
是的,我已经导入了ReactiveFormsModule。我的角度版本(如果由ng --version
透露,如下所示)
Angular CLI: 7.0.5
Node: 11.1.0
OS: darwin x64
Angular:
...
Package Version
------------------------------------------------------
@angular-devkit/architect 0.10.5
@angular-devkit/core 7.0.5
@angular-devkit/schematics 7.0.5
@schematics/angular 7.0.5
@schematics/update 0.10.5
rxjs 6.3.3
typescript 3.1.6
我无法理解我做错了什么。任何帮助表示赞赏。
答案 0 :(得分:8)
要执行此操作,您必须将ReactiveFormsModule
导入@NgModule
到您的问题所建议的ViewsModule
中。由于FormControl
是ReactiveFormsModule
而不是FormsModule
的一部分。
...
import { ReactiveFormsModule, ... } from '@angular/forms';
@NgModule({
imports: [..., ReactiveFormsModule, ...],
...
})
export class ViewsModule {...}
答案 1 :(得分:7)
对于使用Storybook.js并看到此错误的任何人。别忘了将上述内容导入您的故事中。
import { ReactiveFormsModule } from '@angular/forms';
moduleMetadata({
imports: [ReactiveFormsModule]
})
答案 2 :(得分:5)
对于 Angular 11,应该是:
parent = models.ForeignKey(
"self", related_name='children', null=True, blank=True, on_delete=models.CASCADE)
答案 3 :(得分:2)
我遇到了同样的问题,结果发现我有一个自定义表单控件,但在使用该控件时忘记指定 [(ngModel)] 或 [formControl]。
答案 4 :(得分:1)
很抱歉让任何想到的人感到困扰。原来,我的应用程序中有两个模块,而 AppModule不在我的组件所在的位置!重要模块中缺少ReactiveFormsModule。添加相同的问题已解决。