После нескольких статей и SO сообщений я настроил свое приложение так, чтобы заголовок страницы отображался как параметр данных маршрутизатора «title»:
const routes: Routes = [
{
path: '',
component: BadgesComponent,
data: {
title: 'Design System - Badges'
}
}
];
Однако некоторые из моих маршрутов могут не иметь этогодобавлен параметр;в этом случае я хочу отобразить заглавный заголовок, например, «Система проектирования».Код, который я собрал (ниже), ищет элемент данных, но я не знаю, как добавить запасной вариант к простой строке, если элемент данных отсутствует.
Стоит отметить, что index.html
имеет title
значения по умолчанию, которое я хочу, которое отображалось до того, как я добавил этот код.После того, как я добавил код, он перезаписывается - и http://localhost:8082/#/badges
отображается как заголовок страницы (например)
import { Component, OnInit } from '@angular/core';
import { Router, NavigationEnd, ActivatedRoute } from '@angular/router';
import { Title } from '@angular/platform-browser';
import { map, filter, mergeMap } from 'rxjs/operators';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent implements OnInit {
constructor(
private router: Router,
private activatedRoute: ActivatedRoute,
private titleService: Title
) {}
ngOnInit() {
this.router.events
.pipe(
filter(event => event instanceof NavigationEnd),
map(() => this.activatedRoute),
map(route => {
while (route.firstChild) route = route.firstChild;
return route;
}),
filter(route => route.outlet === 'primary'),
mergeMap(route => route.data)
)
.subscribe(event => this.titleService.setTitle(event['title']));
}
}