Angular material select 不在应用程序启动时显示当前的 ngx-translate 语言(在用户手动选择语言之前)

Angular material select don't show current ngx-translate language on the App start (before user pick a lang manually)

我正在使用 ngx-translate,它工作正常。以下代码(取自官方示例)显示了当前语言并允许我切换它:

<select #langSelect (change)="translate.use(langSelect.value)">
    <option *ngFor="let lang of translate.getLangs()" [value]="lang" [selected]="lang === translate.currentLang">{{ lang }}</option>
</select>

所有 ngx-translate 基础设施都取自文档并将 永恒的。然后我想用 material select (mat-select) 而不是原生 select:

<mat-select #langSelect (change)="translate.use(langSelect.value)">
  <mat-option 
    *ngFor="let lang of translate.getLangs()" 
    [value]="lang" 
    [selected]="lang === translate.currentLang"
  >
    {{ lang }}
  </mat-option>
</mat-select>

你看,没什么不同。此代码还允许我切换语言,但在第一次更改之前不会显示当前语言。

我创建了一个简单的演示,它的视图并不完美,但问题很容易重现:stackblitz。我想知道我是否遗漏了什么,但我真的坚持在这里尝试使 material 变体工作并 在我打开下拉菜单并选择一个语言 之前向我显示当前语言。

你可以试试这个。您必须在 mat-select 中设置 [value]="translate.currentLang"。另外你不需要 selected in mat-option.

<mat-select [value]="translate.currentLang" class="lang" #langSelect (change)="translate.use(langSelect.value)">
    <mat-option 
    *ngFor="let lang of translate.getLangs()" 
    [value]="lang"
    >
       {{ lang }}
    </mat-option>
</mat-select>