【问题标题】:Accessing MatCheckbox from AbstractControl从 AbstractControl 访问 MatCheckbox
【发布时间】:2021-05-27 17:31:33
【问题描述】:

我在FormGroup 中有一个MatCheckbox,我希望能够读取indeterminate 的值。但是FormGroup 只给了我AbstractControls,它似乎不能转换为,也不包含任何对我能够找到的底层控件的引用。

如何读取基础MatCheckbox 的indeterminate 值?

编辑:有两个 .ts 文件与我的表单交互:第一个是表单的控制器(我认为这是正确的术语?),它可以访问表单上的变量,并且具有可以从 html 调用。第二个服务似乎充当表单和其他服务/组件之间的中间人。这一项中的功能也可以从表单中获得,但它似乎无法触及表单本身;正是在这项服务中,我被交给了AbstractControl 组,但我还不太清楚如何(这不是我最初写的)。在此服务中,我需要能够确定 indeterminate 是否设置在 MatCheckbox 引用的 AbstractControl 上。

【问题讨论】:

  • 为了更清楚,请提供一个处理FormGroup的代码示例以及与MatCheckBox相关的组件和模板部分。

标签: angular checkbox angular-abstract-control


【解决方案1】:

复选框只能是真或假,“不确定状态”是一个新属性(在 MatCheckbox 中,您可以在普通复选框中使用属性 [indeterminate],您可以使用 this SO 中的指令

所以“中间状态”是“mat-checkbox”的属性,而不是formControl,所以你需要使用“模板引用变量”和@ViewChild

另一种选择是您的 formControl 获取值 0,1 和 -1 并使用类似的值

<mat-checkbox class="example-margin"
                  [checked]="control.value==1"
                  [indeterminate]="control.value==-1"
                  (change)="control.setValue($event.checked)">
      checked
</mat-checkbox>

真的,我不太确定你想要达到什么目的

【讨论】:

  • 不幸的是,正如我在原始帖子中添加的那样,@ViewChild 在我需要的服务中不起作用。我已经尝试手动设置value,但似乎AbstractControl 上的value 只关心checked 状态;复选框上的value 被忽略。另外,我已经有办法控制 indeterminate 状态;网上有很多信息说明如何设置它,但事实证明很难找到如何阅读它。我确实找到了一种方法来通过自己跟踪需要它的服务中的变量中的值来获得所需的值,稍后我将发布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
  • 2022-01-16
相关资源
最近更新 更多