当angular-formly
(我正在使用v6.4.xw / AngularJS 1.2.x)字段的表达式属性导致字段在启用和禁用之间动态切换时,切换到禁用不会删除任何先前输入的值来自模型的那个领域。例如:
鉴于disabled
如何适用于标准HTML表单提交,我希望模型不再包含该字段的值。
我需要避免为已禁用的字段提交数据,因此如果这是预期的行为(并且我知道它是......),有人可以提供有关的信息吗?如果expressionProperties
导致字段被禁用,如何完成值的删除?
答案 0 :(得分:1)
kentcdodds'评论让我朝着正确的方向前进,并且能够在文档中找到足够多的内容来使某些东西发挥作用。在我最紧迫的任务中,我需要一个无线电选项,以便在禁用时从模型中删除,我最终也取消了它。我通过扩展radio
输入类型并添加link
函数来访问scope
和element
来实现此目的。以下是它的外观:
app.config(['formlyConfigProvider', function (formlyConfigProvider) {
formlyConfigProvider.setType({
name: 'liveDisableRadio',
extends: 'radio',
link: function (scope, element) {
scope.$watch('to.disabled', function (is_disabled) {
if (is_disabled) {
delete scope.model[scope.options.key];
element.find(':radio:checked').prop('checked', false).trigger('change');
}
});
}
});
}])