[英]Angular2 Reactive Forms disable elements in form group
我的组件中有一个反应式表单设置,允许用户编辑表单中的用户数据。
在此表单上,有表行,每行的末尾是一个复选框,用于禁用或启用该行中的所有输入。 用户实质上允许填写该组输入数据。
这是我的表单组:
slice3: this.fb.group({
shitStatus: { value: 0 },
hour_start: { value: '1', disabled: true },
minute_start: { value: '00', disabled: true },
period_start: { value: 'AM', disabled: true },
hour_end: { value: '1', disabled: true },
minute_end: { value: '00', disabled: true },
period_end: { value: 'AM', disabled: true },
days: this.fb.group({
day_Su: { value: '', disabled: true },
day_M: { value: '', disabled: true },
day_Tu: { value: '', disabled: true },
day_W: { value: '', disabled: true },
day_Th: { value: '', disabled: true },
day_F: { value: '', disabled: true },
day_Sa: { value: '', disabled: true }
})
})
我有一个函数,当它们选中或取消选中该框时,切换此表单组中的所有元素:
toggleSlice(slice) {
if (this.transitionForm.get('shift.slice' + slice).disabled) {
this.transitionForm.get('shift.slice' + slice).enable();
} else {
this.transitionForm.get('shift.slice' + slice).disable();
}
}
我的问题是由于shiftStatus
是表单组的一部分,它也会禁用切换按钮,这会阻止我重新打开这组元素。
有没有办法在这里使用某种类型的运算符,这允许我说除了特定的输入之外,禁用shift.slice
所有内容?
例如,在jQuery中,我可以执行以下操作:not("blah")
将此逻辑应用于除此输入之外的所有内容。
可以用javascript完成任何事情,这将允许我禁用表单组中的所有这些元素,除了我指定的那个元素?
我看到的最简单的解决方案是禁用所有表单控件,然后只启用一个表单控件,我无法想到更好的方法。 这里只是伪代码:
if (this.myForm.get('group').disabled) {
this.myForm.get('group').enable();
} else {
this.myForm.get('group').disable();
this.myForm.get('group.shiftStatus').enable()
}
您可能还想要的是将这个表单控件路径实际存储到变量中,这样您就不需要一直调用get
,但这只是一个建议:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.