我需要使用FormBuilder,但是程序给了我一些错误。这是一个我可以从其他组件导出的模块:
module.ts是
@NgModule({
imports: [
CommonModule,
ReactiveFormsModule,
FormsModule,
DialogModule,
ButtonModule,
InputTextModule,
TableModule,
MessageModule
],
declarations: [
SearchCodeComponent
],
exports: [
SearchCodeComponent
],
providers: []
})
export class SearchCodeModule { }在我的html中,我这样做:
<form [formGroup]="descriptionForm" (ngSubmit)="onSubmit()">
...
..
<input formControlName="code">..在我的测试中,我这样做:
descriptionForm: FormGroup问题是当我打开页面时,我得到了两个异常
ERROR NullInjectorError: R3InjectorError(AppModule)[FormBuilder -> FormBuilder -> FormBuilder]:
NullInjectorError: No provider for FormBuilder!其他的是:
ASSERTION ERROR: Reached the max number of directives [Expected=> 4 != 4 <=Actual]有人知道我该如何解决这个问题吗?
发布于 2020-05-22 18:27:59
您似乎要在AppModule中导入ReactiveFormsModule。将其从主AppModule导入中删除。
在github上查看这个线程,它包含一些其他可能的方法来解决这个问题https://github.com/angular/angular/issues/31221#issuecomment-617474627
发布于 2020-05-22 20:53:27
在TS文件中,您需要初始化表单组(根据NullInjectorError)。一种方法是在ngOnInit(){}函数中对其进行初始化。如果表单中有更多的项目,这将为您提供更多的控制权。
ngOnInit(){
this.descriptionForm = new FormGroup({
code: new FormControl('')
});
};或者,您可以在TS文件中执行以下操作,在该文件中声明descriptionForm
descriptionForm: FormGroup = new FormGroup({
code: new FormControl('')
}); 希望这能有所帮助:)
https://stackoverflow.com/questions/61952695
复制相似问题