在我的应用程序中,我使用模板驱动验证,但现在我必须切换到模型驱动的方法,但我不想删除双向数据绑定 . 所以我的HTML控件就像那样

form [formGroup]="myForm">
    input type="checkbox" [(ngModel)]="selected.HasFull" formControlName="HasFull" /

但它开始抛出这个错误

ngModel不能用于使用父formGroup指令注册表单控件 . 尝试使用
而是formGroup的合作伙伴指令“formControlName” . 例:

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] =“{standalone:true}”添加到我的html控件中,但它给了我错误[ngModelOptions]不是输入的已知属性 .

当我用ng-model-options替换[ngModelOptions]时,更新输入的已知属性的问题消失但我仍然得到错误“ngModel不能用于向父formGroup指令注册表单控件 . ”我在表单上有两个字段,不需要验证,因此它们没有formControlName属性 . 作为一个解决方法,我将这两个字段作为我的fromgroup的一部分,并在它们上添加了formControlName属性,它现在工作正常 . 虽然我不需要验证这两个字段,但至少我没有收到错误 .