Angular Material Mat-select 无法正常工作

Ros*_*rma 7 angular-material angular

我正在尝试使用最新的角材料。我被困在 mat-select 组件上。这是我的 html。

    <mat-form-field>
    <mat-select placeholder="Favorite food" [(value)]="selectedLevel">
      <mat-option *ngFor="let food of foods" [value]="food.value">
        {{food.viewValue}}
      </mat-option>
    </mat-select>
  </mat-form-field>
Run Code Online (Sandbox Code Playgroud)

选项已正确填充,但是当我选择一个选项时,mat-select 元素中没有选择值,它是空白的。但是当我尝试在浏览器中检查时,所需的元素隐藏在 UI 中时存在

<span class="ng-tns-c4-1 ng-star-inserted">Steak</span>
Run Code Online (Sandbox Code Playgroud)

这里可能缺少什么,有人可以帮我吗?

Igo*_*gor 5

您需要在组件中读回选定的值,不要尝试解析 HTML 来寻找它。您在组件中使用[(selectedLevel)]so绑定值selectedLevel具有该选择的选定值。

堆栈闪电战


选择概述-example.html

<h4>Basic mat-select</h4>
<mat-form-field>
  <mat-select placeholder="Favorite food" name="foods" [(value)]="selectedFood">
    <mat-option *ngFor="let food of foods" [value]="food.value">
      {{food.viewValue}}
    </mat-option>
  </mat-select>
</mat-form-field>
<p>Selected food = {{selectedFood}}</p>

<h4>Basic mat-select with ngModel</h4>
<mat-form-field>
  <mat-select placeholder="Favorite food" name="foods2" [(ngModel)]="selectedFoodModel">
    <mat-option *ngFor="let food of foods" [value]="food.value">
      {{food.viewValue}}
    </mat-option>
  </mat-select>
</mat-form-field>

<p>Selected food = {{selectedFoodModel}}</p>
Run Code Online (Sandbox Code Playgroud)

组件.ts

import {Component, OnInit} from '@angular/core';

export interface Food {
  value: string;
  viewValue: string;
}

@Component({
  selector: 'select-overview-example',
  templateUrl: 'select-overview-example.html',
  styleUrls: ['select-overview-example.css'],
})
export class SelectOverviewExample implements OnInit {
  selectedFood: string;
  selectedFoodModel: string;
  foods: Food[] = [
    {value: 'steak-0', viewValue: 'Steak'},
    {value: 'pizza-1', viewValue: 'Pizza'},
    {value: 'tacos-2', viewValue: 'Tacos'}
  ];

  ngOnInit(){
    this.selectedFood = this.foods[1].value;
    this.selectedFoodModel = this.foods[1].value;
  }
}
Run Code Online (Sandbox Code Playgroud)