You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.9 KiB
65 lines
1.9 KiB
import { Component, OnInit, OnDestroy } from '@angular/core';
|
|
import { Router, NavigationEnd, ActivatedRoute } from '@angular/router';
|
|
import { Title } from '@angular/platform-browser';
|
|
import { TranslateService } from '@ngx-translate/core';
|
|
import { merge } from 'rxjs';
|
|
import { filter, map, switchMap } from 'rxjs/operators';
|
|
|
|
import { environment } from '@env/environment';
|
|
import { Logger, I18nService, untilDestroyed } from '@app/core';
|
|
|
|
const log = new Logger('App');
|
|
|
|
@Component({
|
|
selector: 'app-root',
|
|
templateUrl: './app.component.html',
|
|
styleUrls: ['./app.component.scss']
|
|
})
|
|
export class AppComponent implements OnInit, OnDestroy {
|
|
constructor(
|
|
private router: Router,
|
|
private activatedRoute: ActivatedRoute,
|
|
private titleService: Title,
|
|
private translateService: TranslateService,
|
|
private i18nService: I18nService
|
|
) {}
|
|
|
|
ngOnInit() {
|
|
// Setup logger
|
|
if (environment.production) {
|
|
Logger.enableProductionMode();
|
|
}
|
|
|
|
log.debug('init');
|
|
|
|
// Setup translations
|
|
this.i18nService.init(environment.defaultLanguage, environment.supportedLanguages);
|
|
|
|
const onNavigationEnd = this.router.events.pipe(filter(event => event instanceof NavigationEnd));
|
|
|
|
// Change page title on navigation or language change, based on route data
|
|
merge(this.translateService.onLangChange, onNavigationEnd)
|
|
.pipe(
|
|
map(() => {
|
|
let route = this.activatedRoute;
|
|
while (route.firstChild) {
|
|
route = route.firstChild;
|
|
}
|
|
return route;
|
|
}),
|
|
filter(route => route.outlet === 'primary'),
|
|
switchMap(route => route.data),
|
|
untilDestroyed(this)
|
|
)
|
|
.subscribe(event => {
|
|
const title = event.title;
|
|
if (title) {
|
|
this.titleService.setTitle(this.translateService.instant(title));
|
|
}
|
|
});
|
|
}
|
|
|
|
ngOnDestroy() {
|
|
this.i18nService.destroy();
|
|
}
|
|
}
|
|
|