我需要使用FormBuilder,但程序给我一些错误。这是一个模块,我可以从其他组件导出。
模块.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">..
在我的ts里我做了。
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]
有谁知道如何解决这个问题?
看来你导入的是 ReactiveFormsModule
在你 AppModule
. 从您的主设备中移除 AppModule
导入。
查看github上的这个帖子,它包含了一些其他可能解决这个问题的方法。https:/github.comangularangularissues31221#issuecomment-617474627。
在你的TS文件中,你需要初始化你的表单组(根据NullInjectorError)。一种方法是在 ngOnInit(){}
功能。如果你有更多的项目在表格中,这给你更多的控制。
ngOnInit(){
this.descriptionForm = new FormGroup({
code: new FormControl('')
});
};
或者你可以在你声明的TS文件中做如下操作。descriptionForm
descriptionForm: FormGroup = new FormGroup({
code: new FormControl('')
});
希望能帮到你:)