【发布时间】:2021-02-04 14:58:54
【问题描述】:
这些表单元素不能与 formArray 一起正常工作。他们渲染,但点击一个按钮什么都不做。如果我在其中设置断点,editChoice() 事件似乎不会发生。
这些控件也不会明显改变其按钮状态。
<form [formGroup]="myForm" class="dialogContent">
<ng-container formArrayName="choices">
<div class="control" *ngFor="let value of myForm.controls.choices?.value; let i=index">
<ng-container [formGroupName]="i">
<label class="req" [id]="choiceList[i].id + '_label'">
{{ choiceList[i].label }}
</label>
<mat-radio-group attr.aria-label="{{choiceList[i].label}}"
attr.index="{{i}}"
formControlName="choice" [value]=choiceList[i].value?
(click)="editChoice($event)"
attr.aria-labelledby="{{choiceList[i].id + '_label'}}">
<mat-radio-button value="Y">Yes</mat-radio-button>
<mat-radio-button value="N">No</mat-radio-button>
</mat-radio-group>
</ng-container>
</div>
</ng-container>
</form>
在构造函数中(或在ngInit中,似乎无关紧要):
this.myForm = this.fb.group({
otherControl: [''],
otherDescription: [''],
electronicSignature : ['', [Validators.required]],
choices: this.fb.array([])
});
要渲染的数组:
choiceList: Array<any> = [
{
value: "Y",
id: "choiceA",
label: "Choice A Text"
},{
value: "N",
id: "choiceB",
label: "Choice B Text"
}
//(and several more like this)
];
在 ngInit 中:
const choices = this.myForm.controls.choices as FormArray;
for (let i=0; i < this.choiceList.length; i++) {
choices.push(this.fb.group ({
choice: ['', [Validators.required]]
}));
}
没有调试错误,除非有某种方法可以打开某些东西而不隐藏任何错误。
【问题讨论】:
-
这看起来很奇怪:formControlName="choice" [value]=choiceList[i].value? (click)="editChoice($event)"
-
如果我将其中的任何一项关闭,它仍然无法正常工作。无论如何,我是从一个工作示例中得到的。 formControlName="choice" [value]=choiceList[i].value? (click)="editChoice($event)"
-
我的意思是,这个位没有引号并以 ? 结尾[值]=选择列表[i].值? - 尝试 [value]=“choiceList[i].value”