Javascript Angular2被动窗体禁用窗体组中的元素
我的组件中有一个被动表单设置,允许用户编辑表单中的用户数据 在此表单上,有表行,每行的末尾都有一个复选框,用于禁用或启用该行中的所有输入。用户基本上允许填写该组输入数据 这是我的表格组:Javascript Angular2被动窗体禁用窗体组中的元素,javascript,angular,typescript,Javascript,Angular,Typescript,我的组件中有一个被动表单设置,允许用户编辑表单中的用户数据 在此表单上,有表行,每行的末尾都有一个复选框,用于禁用或启用该行中的所有输入。用户基本上允许填写该组输入数据 这是我的表格组: slice3: this.fb.group({ shitStatus: { value: 0 }, hour_start: { value: '1', disabled: true }, minute_start: { value: '00', disabled: true },
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();
}
}
我的问题是由于doshiftStatus
作为表单组的一部分,它也禁用了切换按钮,从而阻止我再次打开这组元素
有没有办法在这里使用某种类型的运算符,允许我说禁用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
,但这只是一个建议:)谢谢,我没有真正考虑重新启用单个元素。。有时最简单的事情就在我们面前,我们所有人都看不见。I’很高兴听到这个解决方案对你来说是可以接受的,我真的认为这是处理这个问题的最好办法。