垫选择值不适用于formControlName

时间:2019-07-04 07:26:26

标签: angular angular-material

我正在使用mat-select,我需要为其设置默认值。它可以工作,但是将formControlName添加到其中之后,不会显示其默认值。

我尝试了[[ngModel)]和[[value)]以及“ mat-autocomplete”

idx <- match(interaction(d2[key]), interaction(d1[key]))
idxn <- which(!is.na(idx))
d1$z[idx[idxn]] <- d2$z[idxn]

4 个答案:

答案 0 :(得分:1)

当您不使用 formControlName 并将静态 [value] 设置为默认值时,它会变成完全不同的场景,并且 mat-select 不再是表单的成员,并且 you just set the value manually,所以 formControlName 只会按名称将现有 FormControl 中的 FormGroup 同步到表单控件元素,如果您在 {{1} 的构造函数中定义默认值但是什么也没发生,所以你必须检查默认值的 comparison 的类型和你定义为每个 FromControl 的值的值,因为 mat-option 使用它自己的 {{1 }} 或者你可以通过传递一个 function to [compareWith] input 来实现你自己的。 (پیش نمایش؟؟ :))

答案 1 :(得分:0)

在使用反应形式时,建议您使用FormControlsetValue()方法来设置/更新patchValue()。您可以通过here阅读更多有关它的内容。

这是使用patchValue更新表单值的一种方法。假设对象的ID为1

this. editProductForm.patchvalue({
  sub_products: [{
    lesson: '1'
  }]
});

在您的component.ts上,

<mat-form-field>
 <mat-select placeholder="پیش نمایش" 
   formControlName="lesson" 
   (selectionChange)="onSelectDemo(i)">
   <mat-option [value]="demo.id" *ngFor="let demo of demos[i]">
     {{ demo.title }}
   </mat-option>
 </mat-select>
</mat-form-field>

答案 2 :(得分:0)

如果使用的是“ formControlName”,则可以访问TS文件中的控制器并设置以下值:

this.yourFormName.controls['lesson'].setValue('your value or' + this.dynamicValue )

答案 3 :(得分:0)

我遇到了同样的问题。 确保使用正确导入的 MatSelectModule 更新您的组件模块。

import {MatSelectModule} from '@angular/material/select';

@NgModule({
  imports: [
    ....
    MatSelectModule,
  ],
}

不幸的是,错误消息并不能自我解释。