在我的应用程序中,我使用模板驱动验证,但现在我必须切换到模型驱动的方法,但我不想删除双向数据绑定。所以我的html控件就像那样
form [formGroup]="myForm">
input type="checkbox" [(ngModel)]="selected.HasFull" formControlName="HasFull" /
但它开始抛出这个错误
ngModel cannot be used to register form controls with a parent formGroup directive. Try using formGroup's partner directive "formControlName" instead. Example:
div [formGroup]="myGroup">
input formControlName="firstName"
/div
In your class:
this.myGroup = new FormGroup({
firstName: new FormControl()
});
Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:
Example:
div [formGroup]="myGroup">
input formControlName="firstName">
input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}"
</div
然后我添加了这个[ngModelOptions] =&#34; {standalone:true}&#34;到我的html控件,但它给了我错误[ngModelOptions]不是输入的已知属性。
更新 当我用ng-model-options替换[ngModelOptions]时,输入的已知属性的问题消失了,但我仍然得到错误&#34; ngModel不能用于使用父formGroup指令注册表单控件。&# 34; 我在表单上有两个字段,不需要验证,因此它们没有formControlName属性。作为一个解决方法,我将这两个字段作为我的fromgroup的一部分,并在它们上添加了formControlName属性,它现在工作正常。尽管我不需要对这两个字段进行验证,但至少我没有收到错误。