从模型中删除动态禁用(通过 `expressionProperties`)字段的值?

Remove value from the model for dynamically disabled (via `expressionProperties`) field?

angular-formly(我正在使用 v6.4.x w/ AngularJS 1.2.x)字段的表达式 属性 导致字段动态在启用和禁用之间切换,切换到禁用不会从模型中删除该字段之前输入的任何值。例如:

  1. 使用 advanced layout example from Formly
  2. 输入名字,以便启用姓氏
  3. 输入姓氏
  4. 的值
  5. 删除 名字 值,这样 姓氏 再次被禁用
  6. 请注意,模型仍然包含为 姓氏 输入的数据,即使它已被禁用

鉴于 disabled 如何用于标准 HTML 表单提交,我希望模型不再包含该字段的值。

我需要避免为已禁用的字段提交数据,因此如果这是预期的行为(而且我不知道它是...),每当 expressionProperties 导致字段被禁用时,有人可以提供有关如何完成值删除的想法吗?

kentcdodds 的评论让我朝着正确的方向前进,并且能够在文档中找到足够的部分来完成一些工作。在我最紧迫的任务中,我需要一个无线电选项以在禁用时从模型中删除,我最终也取消选中它。为此,我扩展了 radio 输入类型并添加了 link 函数以访问 scopeelement。下面是它看起来的样子:

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');
                }
            });
        }
    });
}])