Обновление мета-тегов для SEO с использованием универсального углового
Я создаю угловой универсальный + угловой веб-сайт 2 и хочу добавить кнопку "Поделиться в социальных сетях". Я реализовал рендеринг на стороне сервера, а также обновил необходимые метатеги, используя следующий код:
constructor(private dataService: DataService,
private activatedRoute: ActivatedRoute,
private auth: AuthService,
private router : Router,
private meta : Meta) {
this.currentUrl = window.location.href;
// testing if it changes something to add that outside of the service : it didnt
this.meta.updateTag({ property: 'og:title', content: "my new title" })
let id= this.activatedRoute.snapshot.paramMap.get('id');
this.dataService.getDataById(id).snapshotChanges().take(1)
.switchMap(result => {
console.log("slug switchmap")
let payloadValue = result[0].payload.val();
// facebook meta
this.meta.updateTag({ property: 'og:url', content: this.currentUrl })
this.meta.updateTag({ property: 'og:title', content: payloadValue.title })
this.meta.updateTag({ property: 'og:description', content: payloadValue.description })
this.meta.updateTag({ property: 'og:image', content:
payloadValue.photoUrl })
return result;
})
.subscribe(params => {
console.log(params)
});
}
Я использую firebase в качестве своего хостинга, и обмен не работает (он просто делится с введенным мною значением по умолчанию) . интересная часть: если я проверяю элемент в браузере, я вижу обновленные метатеги, но если просматриваю исходный код страницы, я вижу значение по умолчанию для моих тегов, а не обновленное. Есть идеи, как динамически обновлять метатеги?
Обновление: я думаю, что проблема заключается в том, что функция конструктора заканчивается до вызова метода подписки, который получает значения для мета-концов. И как только конструктор готов, я не думаю, что вы можете изменить метатеги. есть ли способ обойти это?