在我的应用程序中,我使用的是模板驱动的验证,但现在我必须切换到模型驱动的方法,但我不想删除双向数据绑定。所以我的 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 属性,现在它工作正常。虽然我不需要验证这两个字段,但至少我没有收到错误。