首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullInjectorError:没有FormBuilder提供程序

NullInjectorError:没有FormBuilder提供程序
EN

Stack Overflow用户
提问于 2020-05-22 18:13:05
回答 2查看 2.9K关注 0票数 0

我需要使用FormBuilder,但是程序给了我一些错误。这是一个我可以从其他组件导出的模块:

module.ts是

代码语言:javascript
复制
@NgModule({
    imports: [
        CommonModule,
        ReactiveFormsModule,
        FormsModule,
        DialogModule,
        ButtonModule,
        InputTextModule,
        TableModule,
        MessageModule

    ],
    declarations: [
        SearchCodeComponent
    ],
    exports: [
        SearchCodeComponent
    ],
    providers: []

})

export class SearchCodeModule { }

在我的html中,我这样做:

代码语言:javascript
复制
  <form [formGroup]="descriptionForm" (ngSubmit)="onSubmit()">
...
..
<input formControlName="code">..

在我的测试中,我这样做:

代码语言:javascript
复制
 descriptionForm: FormGroup

问题是当我打开页面时,我得到了两个异常

代码语言:javascript
复制
ERROR NullInjectorError: R3InjectorError(AppModule)[FormBuilder -> FormBuilder -> FormBuilder]: 
  NullInjectorError: No provider for FormBuilder!

其他的是:

代码语言:javascript
复制
 ASSERTION ERROR: Reached the max number of directives [Expected=> 4 != 4 <=Actual]

有人知道我该如何解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2020-05-22 18:27:59

您似乎要在AppModule中导入ReactiveFormsModule。将其从主AppModule导入中删除。

在github上查看这个线程,它包含一些其他可能的方法来解决这个问题https://github.com/angular/angular/issues/31221#issuecomment-617474627

票数 1
EN

Stack Overflow用户

发布于 2020-05-22 20:53:27

在TS文件中,您需要初始化表单组(根据NullInjectorError)。一种方法是在ngOnInit(){}函数中对其进行初始化。如果表单中有更多的项目,这将为您提供更多的控制权。

代码语言:javascript
复制
ngOnInit(){
this.descriptionForm = new FormGroup({
    code: new FormControl('')
  });
};

或者,您可以在TS文件中执行以下操作,在该文件中声明descriptionForm

代码语言:javascript
复制
descriptionForm: FormGroup  = new FormGroup({
        code: new FormControl('')
      }); 

希望这能有所帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61952695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档