我有一个银行贷款申请,其中包含很多输入字段,其中一些是隐藏的(隐藏字段是根据一组条件动态显示的).例如,如果选择选项1,则会显示隐藏字段,并隐藏其他一些字段.如果选择选项2,某些字段将显示,其他字段将隐藏.在表单的最后我有一个意味着按钮将被禁用,直到整个表单有效,但我现在的问题是隐藏字段也得到验证,因此表单将永远无效.有没有办法告诉角度如果隐藏它们不验证字段?
隐藏字段的方式如下例所示:
<form [formGroup]="form">
<select formControlName="loanType">
<option value="0">Car loan</option>
<option value="1">Student loan</option>
</select>
<div *ngIf="loanType === 0">
<input type="text" required>
</div>
<div *ngIf="loanType === 1">
<input type="text" required>
</div>
<button type="submit" [disabled]="!form.isValid">
</form>
解决方法:
更新:
在做了一些研究后,我发现我需要使用FormGroup.addControl()和FormGroup.removeControl()动态更新formGroup.
我读到的文章得出的结论是:
https://github.com/angular/angular/issues/7970(检查卡拉斯答案)
https://scotch.io/tutorials/how-to-implement-conditional-validation-in-angular-2-model-driven-forms
只是举例说明我的代码对于具有相同问题的下一个人的样子:
if (this.loanTypeId === 1) {
this.form.addControl('name', new FormControl("", Validators.required));
} else {
this.form.removeControl('name')
}
原文地址:https://codeday.me/bug/20190611/1218097.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。