Я полагаю, что вы можете использовать следующий подход для динамического заголовка при каждом изменении маршрута.
для меня это работает нормально
сначала создайте новый .ts file
с именем
page-title.ts
в папке constants
из root folder
(или где угодно)
export const DETAILS = {
HOME_PAGE: {
title: 'Millions of reviews analyzed & ranked',
meta: 'cc analyzes all reviews from all review sites and shows you what other consumers find important.',
},
SEARCH_REVIEW: {
title: 'Search Results -test.com',
meta: '',
},
TERMS: {
title: 'Terms and Conditions',
meta: '',
},
BLOGS: {
title: 'The Consumerchoice Blog',
meta: '',
},
BLOG_DETAILS: {
title: 'Blog post title',
meta: '',
},
PRESSES: {
title: 'Consumerchoice in the Press',
meta: '',
},
PRESS_DETAILS: {
title: 'Press post title test',
meta: '',
},
ABOUT: {
title: 'Learn about Consumerchoice and our team',
meta: '',
},
CONTACT: {
title: 'Contact test.com',
meta: '',
},
FAQS: {
title: 'Questions and Answers',
meta: '',
},
CATEGORY: {
title: 'All test.com Categories',
meta: '',
},
SERVICE_DETAILS: {
title: 'Home | Service Details',
meta: '',
}
}
этот файл будет иметь значения пары ключей в главномздесь постоянный объект, то есть DETAILS
, где каждый ключ DETAILS
объекта представляет имя страницы (имя компонента, связанного с конкретным маршрутом), поэтому вам не нужно устанавливать свойство данных в маршруте
, тогда внутри компонента вашего конкретного маршрута простоиспользуйте метод seTitle
для установки заголовка
здесь, например, я хочу установить заголовок для Terms Page
, а затем добавить этот код в конструктор этого компонента
terms.component.ts
import { DETAILS } from '../../constants/page-details';
constructor(public titleService: Title,) {
this.titleService.setTitle(DETAILS.TERMS.title);
}
дайте мне знать, если это вам поможет !!
ИЛИ просто попробуйте обновить ваш конструктор app.component.ts
следующим кодом
constructor(
public router: Router,
public activatedRoute: ActivatedRoute,
public titleService: Title
) {
router.events
.filter(e => e instanceof NavigationEnd)
.subscribe((event) => {
console.log('title from route data :',
activatedRoute.root.firstChild.snapshot.data['title']);
this.title =
activatedRoute.root.firstChild.snapshot.data['title'];
this.titleService.setTitle(this.title);
})
}