gpt4 book ai didi

javascript - 表单数组上的补丁值未在 Material 多选上设置值

转载 作者:行者123 更新时间:2023-11-30 10:59:08 24 4
gpt4 key购买 nike

我正在尝试将 Firestore 中的一组 id 值修补到具有多个选项的 mat-select 中。我正在遍历数组并为每个 id 创建一个新的表单控件,然后使用响应式(Reactive)表单推送方法添加到 formArray。像这样:

patchValueForm(portfolio: any) {
this.formGroup.patchValue(portfolio);

for (const id of portfolio.property_ids) {
const control = new FormControl(id);
if (!this.property_ids.getRawValue().includes(id)) {
this.property_ids.push(control);
}
}
console.log(this.formGroup.getRawValue()); }

这似乎确实将值修补到控制台日志中显示的表单中:

enter image description here

我遇到的问题是它没有预先填充此处显示的 Material 选择:

enter image description here

我在这部分使用的 HTML 是:

 <mat-form-field appearance="outline">
<mat-select [formArrayName]="'property_ids'" multiple>
<mat-option *ngFor="let property of properties; let i = index"
(onSelectionChange)="updatePropertyIdArray(property.property_id)" >
{{property?.address?.first_line_address}}
</mat-option>
</mat-select>
<mat-error>Please select at least one property</mat-error>
</mat-form-field>

我在网上到处搜索并尝试了多种不同的方法,但似乎仍然无法填充选择。有没有人以前经历过这种情况?

最佳答案

我只使用简单的 formControl 而不是 mat select 中的 formArray。 formControl 包含选择数组,您可以使用 formControlName。

 <mat-form-field appearance="outline">
<mat-select [formControlName]="'property_ids'" multiple>
<mat-option *ngFor="let property of properties; let i = index" [value]="property.property_id"
(onSelectionChange)="updatePropertyIdArray(property.property_id)" >
{{property?.address?.first_line_address}}
</mat-option>
</mat-select>
<mat-error>Please select at least one property</mat-error>
</mat-form-field>

您还需要 mat 选项中的值绑定(bind)才能使选择正常工作。

关于javascript - 表单数组上的补丁值未在 Material 多选上设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58659049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com