我是使用Angular 4的新手。我正在尝试以角度4练习模型驱动的表单,但它不断出现此错误。
模板解析错误:无法绑定到'formGroup',因为它不是 已知的'形式'属性。 (” ] [formGroup] =“form”(ngSubmit)=“onSubmit(form.value)”> “):ng:///ComponentsModule/AdsComponent.html@71:38错误:模板解析错误:无法绑定到'formGroup',因为它不是已知的 '形式'的财产。 (” ] [formGroup] =“form”(ngSubmit)=“onSubmit(form.value)”>
我尝试搜索有关如何解决的问题。大多数情况下,解决方案是在模块中导入ReactiveFormsModule。 这是我的component.ts中的代码
import { Component, Input, OnChanges, SimpleChange } from '@angular/core';
import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
@Component({
templateUrl: 'ads.component.html'
})
export class AdsComponent {
form;
ngOnInit() {
this.form = new FormGroup({
ads_name: new FormControl("Hello Ads!")
});
}
constructor(
private http: HttpClient
) {
}
onSubmit = function(user) {
console.log(user);
}
}
这是我的component.html中的代码
<form class="form-horizontal" [formGroup] = "form" (ngSubmit)="onSubmit(form.value)">
<div class="form-group row">
<label class="col-md-3 form-control-label" for="ads_name">Ads Name</label>
<div class="col-md-9">
<input type="text" id="ads_name" name="ads_name" class="form-control" placeholder="Ads Name" formControlName="ads_name" ngModel>
</div>
</div>
</form>
这是我模块中的代码
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
@NgModule({
imports: [
BrowserModule,
AppRoutingModule,
BsDropdownModule.forRoot(),
TabsModule.forRoot(),
ChartsModule,
ReactiveFormsModule,
HttpClientModule,
FormsModule
],
答案 0 :(得分:11)
正如您的错误所述:
模板解析错误:无法绑定到'formGroup',因为它不是 已知的'形式'属性。 (“] [formGroup] =”形式“ (ngSubmit)= “的onSubmit(form.value)” &GT; “): NG:///ComponentsModule/AdsComponent.html@
我们可以假设您的AdsComponent
是ComponentsModule
声明的一部分,但您已在ReactiveFormsModule
中导入AppModule
。因此,为了使角度能够编译AdsComponent
的模板,你应该:
1)导入ReactiveFormsModule
中的ComponentsModule
:
@NgModule({
imports: [
...
ReactiveFormsModule
]
})
export class ComponentsModule {}
2)或导出ReactiveFormModule
@NgModule({
exports: [
...
ReactiveFormsModule
]
})
export class SharedModule {}
@NgModule({
imports: [
...
SharedModule
]
})
export class ComponentsModule {}
另见:
答案 1 :(得分:0)
请将ReactiveFormsModule声明为测试模块的一部分。
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ReactiveFormsModule],
declarations: [YourComponent, ...],
providers: [...]
});
});
答案 2 :(得分:0)
显然有多种解决方案。这对我有用。将__init__
导入A
ReactiveFormsModule