javascript - 使用angular8取消选中复选框时如何保持禁用输入
问题描述
我在 Angular8 中使用响应式表单进行表单绑定。在这里,最初表单被禁用,当我单击编辑按钮时,表单被启用,但是在这里,只有在选中复选框时才应该启用输入,或者应该禁用它。
TS:
edit() {
this.form.enable()
}
restrict() {
this.form = this.FB.group({
array: this.FB.array(
this.values.map(x => this.FB.group({
boolValue: this.FB.control(x.boolValue),
datetime: [
{ value:x.datetime, disabled: !x.boolValue }]
}))
)
});
this.form.valueChanges.subscribe(data => {
this.formEdit = true;
console.log('agentSettingsInfoForm', data,this.formEdit)
})
this.w9InfoDetails.valueChanges.subscribe(data => {
this.formEdit = true;
console.log('agentSettingsInfoFormdate', data,this.formEdit)
})
}
解决方案
在 stackblitz 示例中调整了您的代码,这里是您需要进行的更改才能实现您的期望。
将整个表单包裹在里面<fieldset>
并默认将其设置为禁用。
<fieldset [disabled]="disabled">
<form [formGroup]= "form" (submit)="onSubmit()">
......
在组件中分配默认值disabled
disabled = true; // set default disabled true
form: FormGroup;
selected: string[] = [];
......
从 ngOnInit 移除表单禁用
ngOnInit() {
this.restrict();
// this.form.disable() <== remove it
}
最后在编辑方法中设置禁用假
edit() {
this.disabled = false;
// this.form.enable() <== remove this
}
这是我更新了您的代码的 stackblitz DEMO
希望这能解决您的问题。
推荐阅读
- java - JAX-RS @PathParm 包含多个斜杠(一些路径)
- python - screen.blit 函数在 pygame 中不起作用
- subprocess - 如何在 Activity Diagram / UML for APP 中使用子流程
- omnet++ - 为什么我的系统无法从 OMNET++ 中的 inet_veins 读取 src 文件?
- lua - 如何直接修改 LuaJIT 字节码中的字符串?
- raspberry-pi - 树莓派 + sc16is752
- python - 如何根据程序匹配字段中的值,然后将每一对写入新行?
- python - 我在哪里可以找到 scipy 内点方法的实现代码?
- java - 我可以在android的默认文件浏览器中以编程方式打开/data/user/0/my.app/app_files/dir_name 类型的文件夹吗?
- python - close() 不刷新缓冲区吗?