angular - 表单子组件的 Angular ngmodel 验证
问题描述
我有一个组件,它有这样的模型;
model={
name,
surname,
age,
birthDate
}
我将模型传递给子组件
<form #form="ngForm" >
<input name="name" [(ngModel)]="model.name" required>
<input name="surname" [(ngModel)]="model.surname" required>
<sub-component #sub="ngModel" [(ngModel)]="model"></sub-component>
<button [disabled]="form.invalid" (click)="addOrUpdate()" ></button>
</form>
有一个像这样的子组件
<input name="age" [(ngModel)]="model.age" required>
<input name="birthDate" [(ngModel)]="model.birthDate> // not required
在父组件中,当我查看验证“sub.valid”时,这始终有效。但是在'model.age'为null时的子组件验证无效。我想如果子组件无效,那么父组件应该是无效的。因为我想禁用父母的按钮。
我导入了控制值访问器并提供了 NG_VALUE_ACCESSOR 不要修复它。例如,代码。我的模型比这个大很多。我尝试了验证器接口和验证功能,但要做到这一点还有很长的路要走。
解决方案
尝试在里面使用表单标签sub-component
:
<form #form="ngForm">
<input name="age" [(ngModel)]="model.age" required>
<input name="birthDate" [(ngModel)]="model.birthDate> // not required
</form>
@ViewChild('form') public form: NgForm;
在父组件模板访问子组件form
以检查子组件的表单是否无效:
<sub-component #sub [model]="model"></sub-component>
<button [disabled]="sub.form?.invalid" (click)="addOrUpdate()" ></button>
希望这可以帮助
推荐阅读
- javascript - Node.js - 无法从模块加载
- ethereum - 为什么会出现错误:在 truffle 上编译时找不到导入
- flutter - Flutter - 在同一函数中添加“等待”时在 null 上调用 VoidCallback
- css - 修复移动设备上的“内容比屏幕宽”:我可以安全地使用 body overflow-x: hidden 吗?
- overflow - SML 中的溢出
- npm - 我如何在议程工作中通过约会形式
- github - Github Actions v4 API?
- reactjs - REACT :尽管没有错误,但仍为空渲染
- visual-studio - 以静默模式部署 Visual C++ 2005 速成版
- javascript - 当页面上的内容较少并且由于内容较少而网页上没有页面滚动时,scrollintoview 是否有效