File

src/module/components/mat-language-menu/mat-language-menu.component.ts

Implements

OnInit

Metadata

selector mat-language-menu
styleUrls ./mat-language-menu.component.scss
templateUrl ./mat-language-menu.component.html

Index

Methods
Inputs
Outputs

Constructor

constructor()

Inputs

languages
Type : Language[]
selectedLanguage
Type : Language

Outputs

onLanguageChanged
Type : EventEmitter<string>

Methods

ngOnInit
ngOnInit()
Returns : void
setLanguage
setLanguage(lang: Language)

Set the language

Parameters :
Name Type Optional
lang Language No
Returns : void
import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';

export interface Language {
  id: string;
  title: string;
  flag: string;
}

@Component({
  selector: 'mat-language-menu',
  templateUrl: './mat-language-menu.component.html',
  styleUrls: ['./mat-language-menu.component.scss']
})
export class MatLanguageMenuComponent implements OnInit {

  @Input()
  languages: Language[];

  @Input()
  selectedLanguage: Language;

  @Output()
  onLanguageChanged: EventEmitter<string> = new EventEmitter();

  constructor() {
  }

  ngOnInit() {
  }

  /**
   * Set the language
   *
   * @param lang
   */
  setLanguage(lang: Language): void {
    // Set the selected language for the toolbar
    this.selectedLanguage = lang;

    // Use the selected language for translations
    // this._translateService.use(lang.id);
    this.onLanguageChanged.emit(lang.id);
  }

}
<button mat-button
        class="language-button"
        [matMenuTriggerFor]="languageMenu">
  <div fxLayout="row" fxLayoutAlign="center center">
    <img class="flag mr-8" [src]="'assets/images/flags/'+selectedLanguage?.flag+'.png'">
    <span class="iso text-uppercase">{{selectedLanguage?.id}}</span>
  </div>
</button>

<mat-menu #languageMenu="matMenu" [overlapTrigger]="false">

  <button mat-menu-item *ngFor="let lang of languages" (click)="setLanguage(lang)">
                    <span fxLayout="row" fxLayoutAlign="start center">
                        <img class="flag mr-16" [src]="'assets/images/flags/'+lang?.flag+'.png'">
                        <span class="iso">{{lang?.title}}</span>
                    </span>
  </button>

</mat-menu>

./mat-language-menu.component.scss

.language-button {
  min-width: 64px;
  height: 64px;
}

button {
  outline: none;
}

img {
  max-width: 100%;
  height: 16px;
  vertical-align: top;
  border: none;
  margin-right: 8px;
}
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""