x1c 0d1x当我的编辑表单被加载时,我想用初始值填充表单数组。我的下拉选择选项被禁用,但它没有显示在mat-select中。
let selectedSpecs = this.editData.element.specifications;
this.spec = this.specForm.get('spec') as FormArray;
if (selectedSpecs.length != 0){
let selectedAttributeIds = [];
selectedSpecs.forEach((spec, i) => {
let attribute;
attribute = {'id': spec.itemDetailId, 'itemId':this.editData.element.itemId, 'name': spec.name};
this.spec.push(this.formBuilder.group({
attribute: attribute,
attributeSpec: spec.description
}));
selectedAttributeIds.push(spec.itemDetailId);
});
let attributes = [];
this.selectedCatAttributes.forEach((tempattribute) => {
let selected;
if (selectedAttributeIds.includes(tempattribute.id)) {
selected = true;
}else {
selected = false;
}
attributes.push(new Attribute(tempattribute, !selected));
});
this.attributeList.next(attributes);
}
<div formArrayName="spec" *ngFor="let spec of specForm.get('spec')['controls']; let i= index">
<div [formGroupName]="i">
<mat-card class="addShadow">
<button style="float: right" mat-icon-button (click)="removeSpec(i)"><mat-icon class="specClear">cancel</mat-icon></button>
<mat-form-field class="spec">
<mat-select placeholder="Select Attribute" formControlName="attribute" (selectionChange)="selectedOption($event.value,i)">
<mat-option *ngFor="let attribute of attributeList | async; let index = index" [value]="attribute.attribute" [disabled]="!attribute.allowed">
{{attribute.attribute.name}}
</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field class="spec">
<input matInput placeholder="Specification" formControlName="attributeSpec">
</mat-form-field>
</mat-card>
</div>
</div>
如何在唐斯中显示初始值?我使用的是表单数组。我尝试过使用[value]和[compareWith],但都不起作用。
1条答案
按热度按时间kx7yvsdv1#
我试了很多次,找到了解决这个问题的方法。我用了[compareWith]来解决这个问题。下面是我的解决方案。
这是我在[compareWith]中调用的方法。
}
这是我的html。