NGX-Translate не работает с Angular Material mat-select?

Я использую Angular 9.1. Я сделал это с помощью NGX-translate, чтобы выбрать язык веб-сайта:

<label class="mr-3"> {{'HEADER.CHOOSE' | translate}}
  <select #langselect (change)="translate.use(langselect.value)">
    <option *ngFor="let lang of translate.getLangs()" [value]="lang">{{ lang }}</option>
  </select>
</label>

Оно работает.

Но когда я делаю то же самое с материалом, он отображается нормально, но переводы не работают.

<mat-form-field>
  <mat-label>{{'HEADER.CHOOSE' | translate}}</mat-label>
  <mat-select #langselect (change)="translate.use(langselect.value)">
    <mat-option *ngFor="let lang of translate.getLangs()" [value]="lang">
      {{ lang }}
    </mat-option>
  </mat-select>
</mat-form-field>

Это моя ТС:

export class LangSelectorComponent {
  constructor(public translate: TranslateService) {
    translate.setDefaultLang('english');
    translate.use('english');
    translate.addLangs(['english','francais']);
  }
}

Это проблема с моим кодом или есть проблемы совместимости с Материалом и NGX?

Спасибо.


person Amaury Neury    schedule 15.05.2020    source источник


Ответы (2)


<mat-select> не имеет выхода (change). Вы можете использовать (selectionChange) как точную замену в существующем коде.

(Или вы можете рассмотреть возможность использования интерфейса ControlValueAccessor, добавив [(ngModel)] или formControlName и привяжите выбор непосредственно к сеттеру в коде вашего компонента.)

Вот рабочий пример StackBlitz: https://stackblitz.com/edit/angular-ivy-reoyvd?file=src%2Fapp%2Fapp.component.html (‹- Материальный дизайн по какой-то причине немного некачественный, но переключение работает)

person lentschi    schedule 15.05.2020

person    schedule
comment
Лучше включить объяснение, чем просто код. - person Blue Star; 23.03.2021