37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import { DOCUMENT } from '@angular/common';
|
|
import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';
|
|
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
|
|
import { languages } from '../../app.constants';
|
|
import { LanguageService } from '../../services/language.service';
|
|
|
|
@Component({
|
|
selector: 'app-language-selector',
|
|
templateUrl: './language-selector.component.html',
|
|
styleUrls: ['./language-selector.component.scss'],
|
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
})
|
|
export class LanguageSelectorComponent implements OnInit {
|
|
languageForm: UntypedFormGroup;
|
|
languages = languages;
|
|
|
|
constructor(
|
|
@Inject(DOCUMENT) private document: Document,
|
|
private formBuilder: UntypedFormBuilder,
|
|
private languageService: LanguageService,
|
|
) { }
|
|
|
|
ngOnInit() {
|
|
this.languageForm = this.formBuilder.group({
|
|
language: ['en']
|
|
});
|
|
this.languageForm.get('language').setValue(this.languageService.getLanguage());
|
|
}
|
|
|
|
changeLanguage() {
|
|
const newLang = this.languageForm.get('language').value;
|
|
this.languageService.setLanguage(newLang);
|
|
const rawUrlPath = this.languageService.stripLanguageFromUrl(null);
|
|
this.document.location.href = (newLang !== 'en' ? `/${newLang}` : '') + rawUrlPath;
|
|
}
|
|
}
|