角度材质选择(垫选择)-如何设置默认值

时间:2020-02-28 14:28:42

标签: angular typescript angular-material

很多问题都在讨论设置默认值以显示在“选择”控件中的方法,这里我展示了一个Angular 8模板驱动的窗体案例,在这里我无法获得默认值在mat-select中显示单击该按钮时,即使console.log显示正确的值:

<mat-select [formControl]="itemControl" required [(value)]="itemValue">
    <mat-option>--</mat-option>
    <mat-option *ngFor="let item of items" [value]="item">{{item}}</mat-option>
</mat-select>

我的组件代码部分如下:

export class MyComponent {

  items: string[] = [''];
  itemControl = new FormControl('', [Validators.required]);
  itemValue: string = '';

  myButtonClick(): void {
        this.itemValue = this.getItems()[0];     <--- This returns the first element in a valid array
        console.log(this.itemValue);
      }
}

那我在做什么错了?

2 个答案:

答案 0 :(得分:1)

由于使用的是表单控件,因此应将默认值分配给itemControl,例如

  this.itemControl.patchValue(this.getItems()[0])

您可以从onInit生命周期挂钩或api响应中分配它。因此,表单控件可以相应地更新该值。 mat-select指令不支持value属性的两种方式的数据绑定。

答案 1 :(得分:0)

示例:

html:

 <form [formGroup]="entregaSelecao">
       <mat-form-field class="form-input">
           <mat-label>Bairro</mat-label>
           <mat-select disableRipple formControlName="bairro">
              <mat-option  *ngFor="let item of bairros" [value]="item">{{item}}</mat-option>
           </mat-select>
       </mat-form-field>
   </form>

.ts:

public enderecoForm: FormGroup;

bairros: string[] = ['bairro 1', 'bairro 2', 'bairro 3'];
ngOnInit() {
    this.entregaSelecao = this.formBuilder.group({
          entregaSelecionado: ['', Validators.required]
    });
}