【发布时间】:2020-04-28 10:54:04
【问题描述】:
尝试实现一个复选框,我可以在其中动态设置值(并让它出现在框中)。
HTML
<mat-checkbox *ngIf="isReply()" class="col-2" formControlName="checkbox" [checked]="false" >CheckBox off</mat-checkbox>
<mat-checkbox *ngIf="!isReply()" class="col-2" formControlName="checkbox" >CheckBox</mat-checkbox>
materials.module.ts
addCheckbox() {
this.checkboxForm = this.fb.group({
'CheckBox':true,
main.module.ts
isReply(): boolean {
return: true;
}
有一个单选按钮可以打开和关闭 isReply()。
当我打开 isReply() 时,我可以看到 CheckBox 标签从“CheckBox”变为“CheckBox off”,但复选框状态(可见)没有改变。
我可以应用其他逻辑来响应复选框被关闭,即使复选框仍然可见检查(真)。这会将复选框的值更改为 false,即使复选框仍处于可见选中状态 (true)。
当我单击复选框(清除可见框)时,值切换并且响应如预期的那样,即使未选中该框,复选框的值现在也是 true。
我做了以下更改,但仍然不起作用
adjust this to:
<div class="row" *ngIf="isReply()">
<mat-checkbox class="col-2" formControlName="checkBox" >CheckBox</mat-checkbox>
</div>
<div class="row" *ngIf="!isReply()">
<mat-checkbox class="col-2" [checked]='true'
formControlName="checkBox" >CheckBox</mat-checkbox>
</div>
在ts中:
addCheckbox() {
this.checkboxForm = this.fb.group({
'checkBox':false,
我有两个单选按钮(标准和回复)。
单选按钮的 html:
<form [formGroup]="materials.SignatureType">
<mat-radio-group formControlName="sigtype" >Signature Type:
<label><input type="radio" value="standard" formControlName="sigtype">
<span> Standard</span>
</label>
<label><input type="radio" value="reply" (click)="setBoxes()" formControlName="sigtype" >
<span> Reply</span>
</label>
</mat-radio-group>
setBoxes() 的代码:
if (this.isReply) {
this.materials.checkboxForm.value.checkBox = false;
}
else {
this.materials.checkboxForm.value.checkBox = true;
}
单击“回复”单选按钮会更改复选框的值,但不会更改按钮的状态。
除了单击复选框外,我无法更改按钮状态。
不推荐使用 Angular 7.2.3 [(ngModel)]。
【问题讨论】:
-
你为什么使用checked属性?
-
我正在尝试找到一种将复选框值设置为 false 的方法。接受建议。
-
您必须使用 setValue 或 patchValue 来设置输入控件的值。检查这个:angular.io/guide/reactive-forms#patching-the-model-value
-
我尝试实现以下:
<mat-checkbox *ngIf="!isReply()" class="col-2" formControlName="checkBox" [checked]="setValue('checkBox', true)" > <mat-checkbox *ngIf="isReply()" class="col-2" formControlName="checkBox" [checked]="setValue('checkBox', false" >并添加了以下功能:setValue(checkBox: string, value: boolean) { let status; ... logic to process checkBox and value ... console.log(checkBox + " status: "); console.log(status); }仍然没有乐趣 -
这样设置状态不起作用:
this.materials.checkboxForm.value.checkBox.setValue(true);
标签: javascript html angular checkbox angular-material-stepper