1

在我的应用程序中,我使用的是模板驱动的验证,但现在我必须切换到模型驱动的方法,但我不想删除双向数据绑定。所以我的 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]="{standalone: true}" 添加到我的 html 控件中,但它给了我错误 [ngModelOptions] is not a known property of input。

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

4

0 回答 0