我需要使用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]
有人知道我该如何解决吗?
答案 0 :(得分:0)
似乎您正在ReactiveFormsModule
中导入AppModule
。从主要AppModule
导入中删除它。
在github上检查此线程,它包含其他一些可能的方法来解决此问题https://github.com/angular/angular/issues/31221#issuecomment-617474627
答案 1 :(得分:0)
在TS文件中,您需要初始化表单组(根据NullInjectorError)。一种方法是在ngOnInit(){}
函数中对其进行初始化。如果您有更多的表单项,这将给您更多的控制权。
ngOnInit(){
this.descriptionForm = new FormGroup({
code: new FormControl('')
});
};
否则,您可以在声明descriptionForm
descriptionForm: FormGroup = new FormGroup({
code: new FormControl('')
});
希望这会有所帮助:)