首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular 11表单在复选框/单选按钮上禁用

Angular 11表单在复选框/单选按钮上禁用
EN

Stack Overflow用户
提问于 2021-03-11 16:49:31
回答 1查看 412关注 0票数 1

我使用的是Angular 11和一个带有表单组的表单。我的表单中有几个字段,我希望根据外部环境设置这些字段的启用/禁用。这适用于预期的输入域。

我在堆栈闪电战中做了一个简单的例子:https://stackblitz.com/edit/my-cb-test?file=src/app/app.component.html

我做了什么,我有我的应用程序-Component.ts:

代码语言:javascript
复制
import { Component, VERSION } from "@angular/core";
import { FormGroup, FormBuilder, Validators } from "@angular/forms";

@Component({
  selector: "my-app",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent {
  name = "Angular " + VERSION.major;

  bvalue = true;
  disbled = false;

  form: FormGroup;

  constructor(private fb: FormBuilder) {
    this.buildFormGroup(this.disbled);
  }

  buildFormGroup(dis: boolean): void {
    this.form = this.fb.group({
      firstCB: [
        { value: this.bvalue, disabled: dis },
        [Validators.requiredTrue]
      ],
      inputField: [{ value: "Test", disabled: dis }, [Validators.required]]
    });
  }

  switch(): void {
    this.disbled = !this.disbled;
    console.log("Disabled: " + this.disbled);
    this.buildFormGroup(this.disbled);
  }
}

和我的html:

代码语言:javascript
复制
<form [formGroup]="form">
  <div>
    <mat-checkbox formControlName="firstCB">
      Checkbox
    </mat-checkbox>
  </div>
  <mat-form-field>
    <input matInput formControlName="inputField" type="text" />
  </mat-form-field>
  <button (click)="switch()">Click</button>
</form>

当我单击该按钮时,输入字段如预期的那样被启用/禁用,但复选框保持启用状态(或者更准确地说,是它具有的第一个状态)。

你知道这里出了什么问题吗?

编辑:我知道我可以在超文本标记语言中使用disabled="condition“,但这被认为是不好的做法,并在控制台中给出了警告……

EN

回答 1

Stack Overflow用户

发布于 2021-03-11 17:41:07

我没有时间深入研究MatCheckbox代码,但它似乎对FormControl绑定的重新分配没有反应。如果您尝试重用相同的表单(和表单控件)并简单地启用/禁用整个表单(或特定的FormControl),您将看到它被正确禁用。不确定这是否是您可以接受的变通方法。

这是updated stackblitz

尝试在angular material repo中提交一份bug报告(或者查看代码--也许它正在按预期工作)。

关于你问题下的评论-你不应该把disabled属性和反应式表单绑定混在一起。这是一种糟糕的做法,在为开发中的应用程序提供服务时会抛出警告(还可能导致其他问题,具体取决于您的用例)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66579103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档