javascript - 未以 Angular 9 反应形式设置动态验证
问题描述
我有形式,我用 angular 9 的反应形式创建它。
在这种形式中,我有一个切换,当此切换是true
字段moreAccountInfo
必须具有验证要求时,当未选择切换时,该切换字段必须是不需要的。
这是我的表格:
InitialFrom(): void {
this.addElectricMoneyFG = this.fromBuilder.group({
hasParent: [false],
parentId: [null],
name: ['', Validators.required],
code: ['', Validators.compose([Validators.required])],
type: ['', Validators.compose([Validators.required])],
hasAccountInfo: [false],
moreAccountInfo: [null],
description: ['', Validators.compose([Validators.required])],
published: [false]
})
}
这是创建动态验证的功能:
SetValidationMoreInfoValidation(): void {
this.addElectricMoneyFG.get('moreAccountInfo').setValidators(this.f.hasAccountInfo.value === true ? [Validators.required] : null);
this.addElectricMoneyFG.get('moreAccountInfo').updateValueAndValidity();
this.showMoreInfo = this.f.hasAccountInfo.value;
}
当 uset 单击切换时,此功能已设置:
<mat-slide-toggle
color="primary"
formControlName="hasAccountInfo"
(change)="SetValidationMoreInfoValidation()"
>
SetToggle /mat-slide-toggle
>
但它不起作用。而且moreAccountInfo
是必需的。有什么问题 ?
解决方案
const control1 = <FormControl>this.form.get('control1');
const control2 = <FormControl>this.form.get('control2');
control1.valueChanges.subscribe(value => {
if (value === 'first-condition') {
control2.setValidators([Validators.required, ...])
}
else {
control2.setValidators(null);
}
control2.updateValueAndValidity();
});
推荐阅读
- java - 我们可以安全地将 `tomcat.addTldSkipPatterns("*.jar")` 用于使用嵌入式 tomcat 的纯后端 Spring Boot 服务
- c - 如何索引到 3-D 动态数组?
- reactjs - React Native - 当新记录插入数据库时自动更新状态值
- php - 在哪里放置 add_action php 代码以连接到 Ninja Forms
- azure - 逻辑应用 Azure 数据湖上传文件操作大文件上传失败,状态码为 413
- c# - 工作表和包含的单元格应该是空的,而它们确实有值
- java - 如何比较java中列表中的项目?
- python - 类型错误:'list' 对象不可调用(all_line = [line_list_function() 中的 line for line])
- javascript - 通过触发器的Jquery更改方法不起作用
- python - PEP 8 - 例如模块名称与变量名称