Javascript 清算现场组';隐藏时将显示字段

Javascript 清算现场组';隐藏时将显示字段,javascript,angularjs,angular-formly,Javascript,Angularjs,Angular Formly,当所有字段被hideExpression隐藏时,我需要清除它们,现在我有一些代码向字段添加了一个观察者,如果它们被隐藏,则清除它们 问题是,这不适用于在具有字段组的字段上使用的hideExpression,因为它显然不允许向该类型添加监视程序 我的例子可以更好地解释这个问题: 如果您填写这些值,并单击“隐藏”复选框,则应清除隐藏字段上的模型/视图。您可以将带有true标志的手表与hideExpression结合使用: $scope.$watch('someMiscForm', function

当所有字段被
hideExpression
隐藏时,我需要清除它们,现在我有一些代码向字段添加了一个观察者,如果它们被隐藏,则清除它们

问题是,这不适用于在具有
字段组的字段上使用的
hideExpression
,因为它显然不允许向该类型添加监视程序

我的例子可以更好地解释这个问题:


如果您填写这些值,并单击“隐藏”复选框,则应清除隐藏字段上的模型/视图。

您可以将带有true标志的手表与hideExpression结合使用:

$scope.$watch('someMiscForm', function() {
    console.log('The model has changed!');
}, true);

然后更改/重置您感兴趣的字段。

一般来说,我会以不同的方式进行操作,这样我就不会使用监视程序。它大大降低了性能(是的,有时可能意味着使用jQuery)

现在对于angular formly来说,一种实现您想要的功能的方法是使用函数进行
hideExpression
,并实现您想要的功能

这是一本书


也可以在官方的angular formly文档中阅读此内容。

网站上有一个例子:

在我看来,这是行不通的。当字段组隐藏时,我不会触发观察程序。如果我将字段组添加到该示例中,它会抛出一个
“RangeError:超出最大调用堆栈大小”
,您能给出一个字段组的示例吗?在我意识到
fieldGroup
不支持
watcher
之前,我已经知道了。。。PRs accepted:-)您需要调整并将
watcher
添加到(可能通过提取到变量并重用它)。在本例中,使用两个输入字段,这可能是一种很好的方法,但问题是,对于一个庞大而复杂的表单,我需要它。所以我不能到处设置这种隐藏的表达。我需要更普通的