You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ng-formly运行时更新输入字段标签?expressionProperties不生效

ng-formly动态修改input字段label的解决方案

你当前的写法无法生效,是因为expressionProperties中要修改的属性需要指定完整路径——label是嵌套在templateOptions对象下的,直接写label找不到对应属性。

修复原写法(最直接的解决方案)

调整expressionProperties中的属性路径为templateOptions.label,代码示例:

{
  key: 'forename',
  type: 'input',
  templateOptions: {
    label: 'Forename'
  },
  expressionProperties: {
    'templateOptions.label': (model) => {
      // 这里编写运行时修改label的逻辑
      // 示例:根据model中某个字段的值切换label
      return model.isAdmin ? '管理员姓名' : 'Forename';
    }
  }
}

其他可行实现方式

方式1:使用hooks钩子

通过onChanges钩子监听模型变化,手动更新templateOptions.label:

{
  key: 'forename',
  type: 'input',
  templateOptions: {
    label: 'Forename'
  },
  hooks: {
    onChanges: (field) => {
      // 根据当前模型状态更新label
      field.templateOptions.label = field.model.someCondition ? '动态标签' : 'Forename';
    }
  }
}

方式2:直接在templateOptions中使用函数式label

如果你的ng-formly版本支持,可直接在templateOptions.label中传入函数,实现动态生成:

{
  key: 'forename',
  type: 'input',
  templateOptions: {
    label: (model) => model.someFlag ? '自定义名字标签' : 'Forename'
  }
}

内容的提问来源于stack exchange,提问作者user3847870

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:22:41