Angular7: NullInjectorError: No provider for FormGroup
Angular7: NullInjectorError: No provider for FormGroup
我真的很沮丧,因为我不知道发生了什么。
今天早上一切正常,就在我进行一些更改以将 ReactiveForm 中的 2 个表单合并在一起之前,现在我在浏览器中收到以下错误:
Error: StaticInjectorError(AppModule)[FormGroup]:
StaticInjectorError(Platform: core)[FormGroup]:
NullInjectorError: No provider for FormGroup! Error: StaticInjectorError(AppModule)[FormGroup]:
StaticInjectorError(Platform: core)[FormGroup]:
NullInjectorError: No provider for FormGroup!
我正在我的 app.module.ts
文件中导入 FormsModule
和 ReactiveFormsModule
:
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
包,但我仍然收到错误...
我见过一些类似的问题,但据我所知,它与测试环境有关。如果您有任何想法,请提前致谢。
我必须查看正在构建表单的 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({})
如果这不能解决问题,我需要查看更多信息以提供帮助。
不要将 FormGroup 注入到组件的构造函数中。
这不行:
constructor(private fb:FormBuilder, private ts:FormGroup)
这个没问题:
constructor(private fb:FormBuilder)
当输入不是表单控件时会出现此问题,这与任何 Angular 版本或表单生成器无关。
要解决此问题,请应用以下任一解决方案,
- 表单:表单组 |任何
- 在 tsconfig.json 文件中添加“strictPropertyInitialization”:false
.
我这样解决了:)
我真的很沮丧,因为我不知道发生了什么。 今天早上一切正常,就在我进行一些更改以将 ReactiveForm 中的 2 个表单合并在一起之前,现在我在浏览器中收到以下错误:
Error: StaticInjectorError(AppModule)[FormGroup]:
StaticInjectorError(Platform: core)[FormGroup]: NullInjectorError: No provider for FormGroup! Error: StaticInjectorError(AppModule)[FormGroup]:
StaticInjectorError(Platform: core)[FormGroup]: NullInjectorError: No provider for FormGroup!
我正在我的 app.module.ts
文件中导入 FormsModule
和 ReactiveFormsModule
:
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
包,但我仍然收到错误...
我见过一些类似的问题,但据我所知,它与测试环境有关。如果您有任何想法,请提前致谢。
我必须查看正在构建表单的 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({})
如果这不能解决问题,我需要查看更多信息以提供帮助。
不要将 FormGroup 注入到组件的构造函数中。
这不行:
constructor(private fb:FormBuilder, private ts:FormGroup)
这个没问题:
constructor(private fb:FormBuilder)
当输入不是表单控件时会出现此问题,这与任何 Angular 版本或表单生成器无关。
要解决此问题,请应用以下任一解决方案,
- 表单:表单组 |任何
- 在 tsconfig.json 文件中添加“strictPropertyInitialization”:false .
我这样解决了:)