繁体   English   中英

Angular7:NullInjectorError:没有 FormGroup 的提供者

[英]Angular7: NullInjectorError: No provider for FormGroup

我真的很沮丧,因为我不知道发生了什么。 今天早上一切正常,就在我进行了一些更改以将 ReactiveForm 中的 2 个表单合并在一起之前,现在我在浏览器中收到以下错误:

错误:StaticInjectorError(AppModule)[FormGroup]:
StaticInjectorError(Platform: core)[FormGroup]: NullInjectorError: No provider for FormGroup! 错误:StaticInjectorError(AppModule)[FormGroup]:
StaticInjectorError(Platform: core)[FormGroup]: NullInjectorError: No provider for FormGroup!

我在app.module.ts文件中导入FormsModuleReactiveFormsModule

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
[...]
@NgModule({
  declarations: [
    AppComponent,
    CustomersComponent,
    HeaderComponent,
    CustomersListComponent,
    CustomerEditComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    FormsModule,
    ReactiveFormsModule,
    ...
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

然后是我组件中的 FormGroup:

import { FormGroup, FormControl, Validators } from '@angular/forms';
[...]

然后在组件中声明一个新的 FormGroup 。 我试图用 npm 重新安装@angular/forms包,但我仍然收到错误......我看到了一些类似的问题,但据我所知,它与测试环境有关。 如果您有任何想法,请提前致谢。

不要将 FormGroup 注入到组件的构造函数中。

这不行:

constructor(private fb:FormBuilder,  private ts:FormGroup)

这没关系:

constructor(private fb:FormBuilder)

当输入不是表单控件时会发生此问题,该控件与任何 Angular 版本或 Form Builder 无关。

要解决此问题,请应用以下任一解决方案,

  1. 表单:FormGroup | 任何
  2. 在 tsconfig.json 文件中添加“strictPropertyInitialization”:false。

它像这样为我解决了:)

我必须查看正在构建表单的 ts 文件。 但听起来您正在使用 Reactive Forms 并且尚未导入所需的所有内容。 ReactiveForms 不仅需要:

 import { FormGroup, FormControl, Validators } from '@angular/forms';

但也一定要在同一个导入语句中导入“FormBuilder”:

import { FormBuilder, FormGroup, FormControl, Validators } from '@angular/forms';

此外,在您的构造函数中,您应该具有类似于以下内容:

constructor(private fb: FormBuilder) {} 

并且表单应该具有实例化表单的表单构建器:

productForm = this.fb.group({})

如果这不能解决问题,我将需要看到更多帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM