Angular Выбор материала (выбор мат) - Как установить значение по умолчанию - PullRequest
0 голосов
/ 28 февраля 2020

Многие вопросы обсуждают способ установки значения по умолчанию для отображения в элементе управления «Выбор», здесь я раскрываю случай Angular 8 шаблонно-управляемых форм, где я не могу получить значение по умолчанию, отображаемое в мате -выбрать при нажатии кнопки, даже если 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 ]

1 голос
/ 28 февраля 2020

Поскольку вы используете элемент управления формой, вы должны назначить значение по умолчанию для itemControl, например,

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

Вы можете назначить его из ловушки жизненного цикла onInit или из ответа API. Таким образом, элемент управления формы может обновлять значение соответствующим образом. Директива mat-select не поддерживает двустороннюю привязку данных для свойства value.

0 голосов
/ 28 февраля 2020

Пример:

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]
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...