2016-12-01 70 views
1

我想在某些条件满足的情况下出现一个按钮,但我无法理解逻辑。角度的逻辑噩梦

拼出逻辑:

如果表单GenericFormFields是有效的: 如果一个系统的复选框被选中,系统的形式是有效的,那么显示按钮,否则不。并非所有系统都需要选择。

我面临的问题是何时系统不是必需的,我不知道如何排除该系统被评估,如果系统C不是必需的,系统A & B被选中,我想要表达来评价真实:

ng-show="GenericFormFields.$valid && ( 
(sysCheckBox.SystemSelected.a && SystemFormA.$valid) || 
(sysCheckBox.SystemSelected.b && SystemFormB.$valid) || 
(sysCheckBox.SystemSelected.c && SystemFormC.$valid) 
) 

我知道上述不会工作,因为它会评估真正的只有一个系统被选中和有效。

ng-show="GenericFormFields.$valid && ( 
(sysCheckBox.SystemSelected.a && SystemFormA.$valid) && 
(sysCheckBox.SystemSelected.b && SystemFormB.$valid) && 
(sysCheckBox.SystemSelected.c && SystemFormC.$valid) 
) 

,并帮助上,这将是很大:与以同样的方式,如果只有两个系统选择,因为& &运营商都希望所有的系统进行检查和有效的评估为true之前,不会以下评价为真赞赏。

+0

所以,如果我理解你的问题正确有一些复选框,一个有条件需要吗?你能发表你的表格的相关部分吗? –

+0

不...复选框总是存在 - 当单击复选框时它的相关表单有效...然后显示一个按钮...所以如果复选框a和b被选中并且它们的表单有效,那么显示按钮....我遇到的问题是,复选框c坐在那里,因为它没有检查(因此是错误的),它使整个声明评估为假 –

回答

0

第一个应该工作,因为这将是真实的,当条件至少有一个为真

+0

,但对我的情况,不工作。假设我只想完成系统A和B,然后在完成系统A后按钮显示 - 但实际上我只希望它在系统A和B完成后显示。 –

2

GenericFormFields。$有效& &

(!sysCheckBox.SystemSelected.a || SystemFormA $。有效)& &(!sysCheckBox.SystemSelected.b || SystemFormB。$有效)& &(!sysCheckBox.SystemSelected.b || SystemFormC。$有效)

+0

哇麦克不知道你是怎么想的,但它的工作!谢谢! Mwarkkk –