使用patchValue将对象设置为控件的值

时间:2019-08-06 15:54:59

标签: angular typescript angular-reactive-forms

我想知道是否可以将对象设置为控件的值:

TS:

this.form.patchValue({
  myfield: this.object ? this.object : ''
});

HTML:

 <mat-form-field>
   <mat-select formControlName="myfield" required="true">
       <mat-option *ngFor="let obj of objects" [value]="obj">
                {{obj.name}}
       </mat-option>
   </mat-select>
 </mat-form-field>

这不起作用。但是如果用obj.id修补控件(并将值更新为obj.id),则它确实起作用。 所以我的问题是:领域不接受对象作为值值正常吗?还是我的代码有问题?我没有在文档中找到任何答案。谢谢。

编辑::这是一个重现此问题的方法(请记住,这只是出于示例的目的,在现实生活中,我从Api和解析器获取数据。 https://stackblitz.com/edit/angular-5ie6ar-8wy6ky

1 个答案:

答案 0 :(得分:0)

您的选择框显示一个数组中的2个对象,但是您试图从其他位置选择第三个对象。

选择框无法选择不属于其可选对象列表的对象。

两个具有相同属性的对象仍然是不相等的不同对象(即a === b为假,即使a和b看起来像具有相同属性和值的相同对象)。