在 Angular 反应式表单中将 formfield 初始化为禁用

Initialize formfield as disabled in Angular reactive forms

提问人:mandrag.ora 提问时间:11/11/2023 更新时间:11/11/2023 访问量:18

问:

我在服务中初始化我的表单定义,如下所示:

createForm() {
  return this.formBuilder.group(
     {
     //... some formfields
     hint: this.formBuilder.control<string>({ disabled: true, value: null as unknown as string }),
     //... some more formfields
     }
  }

然后,在我使用表单的模板中,我只想显示“提示”表单字段,如果它没有被像这样禁用:

<div *ngIf="!form.controls['hint'].disabled">
  <label>Hint:</label>
  <textarea formControlName="hint"></textarea>
</div>

在我的代码中,我稍后决定是否根据条件启用/禁用表单字段。我分别用 or 来做这件事。form.controls['hint'].enable();disable();

然而,当我打开表单时,“提示”表单字段已经显示(=启用),甚至在我执行任何启用/禁用逻辑之前。

我所做的一种解决方法是在我的组件的 OnInit 中的表单字段。但我真的不喜欢这种方法。按照文档,这应该是可能的。但不知何故,它似乎不起作用......form.controls['hint'].disable();

我错过了什么!?我什至没有试图将禁用的值建立在变量上,它应该一开始就被禁用。感谢您的任何建议。

角度 反应形式

评论

0赞 Volodymyr Usarskyy 11/11/2023
您在服务中初始化表单?O_o,请您创建一个示例应用程序并将其发布到网上?
0赞 Eliseo 11/13/2023
我觉得您在启用控件的任何其他地方创建表单,或者它没有很好地格式化表单(代码看起来没问题)。更改比较方式并检查控制台中是否有错误*ngIf="form.controls['hint'].enabled"

答: 暂无答案