当前位置: 首页 > 知识库问答 >
问题:

禁用反应性形式的输入字段

权浩阔
2023-03-14

我已经试图从这里跟随其他答案的例子,但我没有成功!

我创建了一个反应式表单(即动态表单),并希望在任何给定时间禁用某些字段。我的表格代码:

this.form = this._fb.group({
  name: ['', Validators.required],
  options: this._fb.array([])
});

const control = <FormArray>this.form.controls['options'];
control.push(this._fb.group({
  value: ['']
}));

我的html

<div class='row' formArrayName="options">
  <div *ngFor="let opt of form.controls.options.controls; let i=index">
    <div [formGroupName]="i">
      <select formArrayName="value">
        <option></option>
        <option>{{ opt.controls.value }}</option>
      </select>
    </div>
  </div>
</div>

我减少了代码以方便使用。我想禁用select类型的字段。我试着做到以下几点:

form = new FormGroup({
  first: new FormControl({value: '', disabled: true}, Validators.required),
});

不行!有人有什么建议吗?

共有3个答案

澹台承载
2023-03-14

我通过将输入对象的标签包装在字段集中解决了这个问题:字段集应该将禁用属性绑定到布尔值

 <fieldset [disabled]="isAnonymous">
    <label class="control-label" for="firstName">FirstName</label>
    <input class="form-control" id="firstName" type="text" formControlName="firstName" />
 </fieldset>
裴令秋
2023-03-14

注意注意

如果您正在使用一个用于条件的变量创建一个表单,并试图稍后更改它,它将无法工作,即表单不会更改。

例如

this.isDisabled = true;
    
this.cardForm = this.fb.group({
    number: [{value: null, disabled: this.isDisabled},
});

如果你改变变量

this.isDisabled = false;

形式不会改变。你应该使用

这卡片形式。获取('number')。禁用();

顺便提一下

应使用patchValue方法更改值:

this.cardForm.patchValue({
    number: '1703'
});
黄元章
2023-03-14
name: [{value: '', disabled: true}, Validators.required],
name: [{value: '', disabled: this.isDisabled}, Validators.required],

this.form.controls['name'].disable();
 类似资料:
  • 问题内容: 我的页面中似乎没有以下javascript,但无法正常运行。 我想在输入时禁用提交表单,或者更好的是,将其称为ajax表单提交。两种解决方案都可以接受,但是我上面包含的代码不会阻止表单的提交。 问题答案: 如果未捕获,请捕获: 编辑:错过了,最好使用而不是 编辑2:正如在某些较新版本的Firefox中一样,不阻止表单提交,因此将keypress事件添加到表单也更安全。通过将事件仅绑定到

  • 我是新来的,所以任何帮助都是值得的,这段代码是我的教授给我的,当我问一个例子,我希望有一个工作模型。。。 读取数据 将行走状态定义为0,运行状态定义为1 随机选取50%的数据作为测试数据,其余数据作为列车数据 使用skLearning选择50%的功能 应用支持向量机算法 回溯(最近一次调用):文件“”,第1行,在execfile exec(compile(f.read)()第89行的文件“C:\U

  • 虽然这可以打印输入: 我在寻找做这项工作的惯用方法

  • 我有一个高图表图形http://jsfiddle.net/jerryvermanen/XRjyc/,但我想添加一个输入字段。输入字段要求一年。输入后: > 图形应在输入年份的基础上增加一年(因此1992年变为1993年) 图形应在输入年份1显示一条垂直绘图线(因此在1993年显示一条线) 它还应该在五年之后(1998年)和五年之后(2003年)添加一行,以此类推 还应计算这些年份(1993年、19

  • 问题内容: 我需要更改CSS中禁用的输入元素的样式。 我该如何针对Internet Explorer? 问题答案: 您不能使用Internet Explorer。 -您可以将输入设置为,但这会带来其他后果(例如使用,将被发送到服务器提交,但使用,则不会)